Hiphone2016
2016-10-16 06:36
采纳率: 50%
浏览 2.9k
已采纳

java 用键盘输入初始化二维数组后,遍历每一行数组时,输出结果有问题

这个问题是在写一个小程序时遇到的:
程序功能:
将两个数组合并后排序并输出:
输入:
5,3 (两个数组各自的长度)
9,6,5,3,1 (第一个数组)
7,4,2 (第二个数组)
输出:
1,2,3,4,5,6,7,9

下面是代码:
public class Main2 {
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int[][] arrays=new int[3][]; //用于存放输入的三行数据,每行数据都存入一个数组
for(int i=0;i<arrays.length;i++){
String str=sc.nextLine();
String[] strArray=str.split(",");
for(int j=0;j<strArray.length;j++){
arrays[i]=new int[strArray.length];
arrays[i][j]=Integer.parseInt(strArray[j]);
System.out.print(arrays[i][j]+",");
}
System.out.println();
}
for(int num:arrays[1]){ //检测arrays[1]中的数据,为什么这里不对???
System.out.print(num+",");
}
System.out.println();

    for(int num:arrays[2]){   //检测arrays[2]中的数据,为什么这里不对???
        System.out.print(num+",");
    }
    System.out.println();

    int[] combineArray=Arrays.copyOf(arrays[1],arrays[1].length+arrays[2].length);
    for(int num:combineArray){
        System.out.print(num+",");
    }
    System.out.println();

    System.arraycopy(arrays[2], 0, combineArray, arrays[1].length, arrays[2].length);
    for(int num:combineArray){
        System.out.print(num+",");
    }
    System.out.println();

    Arrays.sort(combineArray);
    for(int num:combineArray){
        System.out.print(num+",");
    }
    System.out.println();
}

}
为什么
for(int num:arrays[1]){ //检测arrays[1]中的数据,为什么这里不对???
System.out.print(num+",");
}
System.out.println();

    for(int num:arrays[2]){   //检测arrays[2]中的数据,为什么这里不对???
        System.out.print(num+",");
    }
    System.out.println();
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • 毕小宝 2016-10-16 08:52
    已采纳

    我找到原因了,因为你是在for(int j=0)的循环中每次循环时又对arrays[i] = new了一次操作,导致,最终arrays都是一个新new的对象,都是默认值。
    修正代码如下:

     for (int i = 0; i < arrays.length; i++) {
                String str = sc.nextLine();
                String[] strArray = str.split(",");
                //在列循环外面,对每一行的数据new
                arrays[i] = new int[strArray.length];
    
                for (int j = 0; j < strArray.length; j++) {
                    arrays[i][j] = Integer.parseInt(strArray[j]);
                    System.out.print("i"+i+",j:"+j+",value:"+arrays[i][j] + ",");
                }
                System.out.println();
            }
    
    点赞 打赏 评论

相关推荐 更多相似问题