Hiphone2016 2016-10-16 06:36 采纳率: 100%
浏览 3016
已采纳

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();
            }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮