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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张钧杰 中级黑马   /  2012-11-5 13:23  /  1466 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张钧杰 于 2012-11-8 14:04 编辑

  /*
1、printArray
*/
class ArraySort
{
public static void main(String[] args) {
  int[] arr = {3,2,8,7,6,1};
  printArray(arr);
}
//printArray
public Static void printArray(int[] array){
  System.out.print("[");
  for (int i = 0; i < array.length; i++) {
   //打印数组最后一个不带" , "逗号
   if (i!=array.length-1) {
    System.out.print(array+",");
   }
   else
   System.out.print(array);  
  }
  System.out.println("]");
}

}

上段代码的中,关键字,我不小心打成了大写S,造成好多问题,,让我费了好大的周拆找问题,其实是个小问题,
---------- javac ----------
ArraySort.java:14: 错误: 需要<标识符>
public Static void printArray(int[] array){
              ^
ArraySort.java:14: 错误: 方法声明无效; 需要返回类型
public Static void printArray(int[] array){
                    ^
2 个错误

一定要从错误提示开始找问题,不然的,你会很头痛,咋一眼看上去,啥问题没有,你要看^左右两边找错
误,需要<标识符>你就看看,左右两边关键字和标识符,对不对,然后我把 S改成小写s就不报错了,就编译成功了,一个错误,对我们没经验了,可是要命啊,可能要找几十分钟也找不出来。

下面说一下,if语句使用的问题。

for (int i = 0; i < array.length; i++) {
   //打印数组最后一个不带" , "逗号
   if (i!=array.length-1) {
    System.out.print(array+",");
   }
   System.out.print(array);  
  }
刚开始,我没使用 else打印出来的正常。。
[3,2,8,7,6,1]

后来确打印出来的是。

[3,32,28,87,76,61]

if 下面第一条语句不是 else意思吗???

评分

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

查看全部评分

2 个回复

倒序浏览
本帖最后由 朱宏青 于 2012-11-5 13:37 编辑

让我稍微看一下..

大致看懂了
  1. for (int i = 0; i < array.length; i++) {
  2.    //打印数组最后一个不带" , "逗号
  3.    if (i!=array.length-1) {
  4.     System.out.print(array+",");
  5.    }
  6.    System.out.print(array);
  7.   }
复制代码
重点在于System.out.print(array); 部分.

首先我要说的是if(){}else{}假如你不带else系统是不会给它自己加上去的.明白?

所以说if(){}else{System.out.print()}跟if(){}System.out.print()是不一样的.前者在if条件为false的时候才会进行System.out.print(),后者则已经跟这个if没有关系了,无论前面的if里的内容是否运行,它都会System.out.print();明白?

所以以上代码才会导致重复输出.

顺便我还要说下,这真的是数组?为什么没有下标.应该是
  1. array[i]
复制代码
这样才对吧.请注意规范...(我去,我知道了,这论坛貌似过滤了后面那几个符号..坑爹.)

点评

有木有兴趣当版主,有兴趣的话,联系我。  发表于 2012-11-7 17:06

评分

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

查看全部评分

回复 使用道具 举报
public Static void printArray(int[] array){
  System.out.print("[");
  for (int i = 0; i < array.length; i++) {
   //打印数组最后一个不带" , "逗号
   if (i!=array.length-1) {
    System.out.print(array+",");
   }
   else
//少了一个{
   System.out.print(array);  
  }
  System.out.println("]");
}

}


楼主,你的程序有一个很明显的错误,就是书写错误,else下面少了一个括号,括号要成对敲才可以哦。

评分

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

查看全部评分

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