黑马程序员技术交流社区

标题: 编译错误 [打印本页]

作者: 刘博    时间: 2011-12-6 12:45
标题: 编译错误
本帖最后由 孤独的人 于 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);
        }
}
为什么打印的是空的。


   
               
作者: 杨强    时间: 2011-12-6 12:46
Demo3.reversePrint的返回值是 void,也就是说什么都不返回,你不可以打印虚无的东东
作者: 刘海涛    时间: 2011-12-6 13:21
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循环


作者: 武超    时间: 2011-12-6 15:37
本帖最后由 武超 于 2011-12-6 15:38 编辑

连输出语句都没有。这怎么可能有输出啊
作者: 段波    时间: 2011-12-7 00:16
Demo3.reversePrint(arr,3,4))的返回值是void类型的,不符合System.out.println()参数要求,所以编译不会通过的。
作者: wsssx    时间: 2011-12-7 08:19
提示: 作者被禁止或删除 内容自动屏蔽
作者: 杨玉揆    时间: 2011-12-7 08:35
按照你上面的代码来看是有错误的,
  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]);}即可!!!
作者: 赵燕燕    时间: 2011-12-7 10:04
因为reversePrint方法返回的是空,这不能打印。
要想在main函数中打印替换后的数组,可以直接遍历一下arr,因为数组建立之后保存在堆中,arr指向该数组,调用方法reversePrint将数组内容替换后,arr的指向没变,但是arr指向的内容改变,即arr保留了操作。所以直接遍历arr打印即可。
作者: 应国炎    时间: 2011-12-7 13:39
(如果需要打印完整数组数据,可以用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);
        }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2