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个回答

我找到原因了,因为你是在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();
        }
wojiushiwo945you
毕小宝 都一年了啊,才采纳!
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐