A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘博 黑马帝   /  2011-12-6 12:45  /  2625 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孤独的人 于 2011-12-6 13:09 编辑

Demo4.java:8: 错误: 此处不允许使用 '空' 类型
                System.out.println(Demo3.reversePrint(arr,3,4));
                                                     ^
1 个错误
class Demo3
static void reversePrint(int[] arr,int a,int b)
        {
                int tem = arr[a];
                arr[a] = arr;
                arr = tem;
                }

class Demo4

class Demo4
{
        public static void main(String[] args)
        {
                int[] arr = new int[]{3,4,2,6,23,5,15};
                Demo3.reversePrint(arr,3,4);
        }
}
为什么打印的是空的。


   
               

8 个回复

倒序浏览
Demo3.reversePrint的返回值是 void,也就是说什么都不返回,你不可以打印虚无的东东
回复 使用道具 举报
1、首先要明白在控制台输出java用什么方法。
2、要了解java的数据类型。
3、java 返回修饰符
这三点基础你要明白。

下面打印方法所接收的参数。

  1. class Demo3 {
  2. static void reversePrint(int[] arr,int a,int b)
  3.         {
  4.                 int tem = arr[a];
  5.                 arr[a] = arr[b];
  6.                 arr[b] = tem;
  7.         }
  8. }

  9. class Demo4
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int[] arr = new int[]{3,4,2,6,23,5,15};
  14.                 Demo3.reversePrint(arr,3,4);
  15.                 for (int value : arr) {
  16.                         System.out.println(value);
  17.                 }
  18.         }
  19. }
复制代码
输出 :
3
4
2
23
6
5
15
打印交换后的数组,数组打印要取出个值来。用for循环

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 武超 于 2011-12-6 15:38 编辑

连输出语句都没有。这怎么可能有输出啊
回复 使用道具 举报
Demo3.reversePrint(arr,3,4))的返回值是void类型的,不符合System.out.println()参数要求,所以编译不会通过的。
回复 使用道具 举报
wsssx 2011-12-7 08:19:59
地板
提示: 作者被禁止或删除 内容自动屏蔽
回复 使用道具 举报
杨玉揆 黑马帝 2011-12-7 08:35:37
7#
按照你上面的代码来看是有错误的,
  1. [color=Red]class Demo3[/color]
  2. static void reversePrint(int[] arr,int a,int b)
  3.         {
  4.                 int tem = arr[a];
  5.                 arr[a] = arr;
  6.                 arr = tem;
  7.                 }

  8. [color=Red]class Demo4[/color]

  9. class Demo4
  10. {
  11.         public static void main(String[] args)
  12.         {
  13.                 int[] arr = new int[]{3,4,2,6,23,5,15};
  14.                 Demo3.reversePrint(arr,3,4);
  15.         }

  16. }
复制代码
你想打印出必须的输出:如用for(int x =0;x<arr.length;x++){System.out.println("a["+x+"] ="+arr[x]);}即可!!!

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

回复 使用道具 举报
赵燕燕 黑马帝 2011-12-7 10:04:58
8#
因为reversePrint方法返回的是空,这不能打印。
要想在main函数中打印替换后的数组,可以直接遍历一下arr,因为数组建立之后保存在堆中,arr指向该数组,调用方法reversePrint将数组内容替换后,arr的指向没变,但是arr指向的内容改变,即arr保留了操作。所以直接遍历arr打印即可。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
应国炎 黑马帝 2011-12-7 13:39:09
9#
(如果需要打印完整数组数据,可以用for循环)

1 你交换的时候有错误
          int tem = arr[a];
                arr[a] = arr;
                arr = tem;
arr是数组的地址,正确的应该是arr[b];

2 有人说void不能使用参数,其实是可以的

3 可以打印出数据,这点我也没想到,竟然打印出来的是4和3,不知道谁能解释一下不?
class Demo3
{
static void a(int[] arr,int a,int b)
        {
                int tem = arr[a];
                arr[a] = arr[b];
                arr[b] = tem;
         }
        
}


class Demo4
{
        public static void main(String[] args)
        {
                int[] arr = new int[]{3,4,2,6,23,5,15};
                Demo3.a(arr,3,4);
        }
}

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马