Java Scanner对象一直需要输入

Java Scanner对象一直需要输入,java,Java,我有以下代码,其中矩阵是通过系统输入定义的: import java.io.*; import java.util.*; public class Test { public static void main(String[] args) { Scanner in = new Scanner(System.in); //define size of matrix int size = in.nextInt(); i

我有以下代码,其中矩阵是通过系统输入定义的:

import java.io.*;
import java.util.*;

public class Test {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        //define size of matrix
        int size = in.nextInt();

        int primeSum = 0;
        int secSum = 0;
        int[] matrix = new int[size*size];

        //create matrix
        for (int i=0; i<size*size;i++) {
            matrix[i] = in.nextInt();
        }

        in.close();

        //sum primary diagonal
        for (int i=0; i < size*size;i += (size + 1)) {
            primeSum = primeSum + matrix[i];
        }

////sum secondary diagonal
//        for (int i=(size - 1); i < size*size; i += (size - 2)) {
//          secSum = secSum + matrix[i];
//        }

        System.out.println(Math.abs(secSum - primeSum));


    }
}
import java.io.*;
导入java.util.*;
公开课考试{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
//定义矩阵的大小
int size=in.nextInt();
int primeSum=0;
int secSum=0;
int[]矩阵=新的int[size*size];
//创建矩阵

对于(int i=0;i您的这部分代码:

 for (int i=0; i<size*size;i++) {
       matrix[i] = in.nextInt();
 }

for(int i=0;i您的这部分代码:

 for (int i=0; i<size*size;i++) {
       matrix[i] = in.nextInt();
 }

for(int i=0;i您编写了一个潜在的无限循环。即,如果大小不大于2,则
i
将倒计时或保持
0
。您应该涵盖这些情况,那么您的代码就可以了

据我所见,您正在一维上模拟二维数组。这很难理解,也很容易搞乱。您最好使用二维数组和一些嵌套循环:

    int[][] matrix = new int[size][size];

    //create matrix
    for (int i=0; i<size; i++) {
        for (int j=0; j<size; j++) {
            matrix[i][j] = in.nextInt();
        }
    }
    // and so on...
int[][]矩阵=新的int[size][size];
//创建矩阵

对于(int i=0;i您编写了一个潜在的无限循环。也就是说,如果大小不大于2,则
i
将倒计时或保持
0
。您应该涵盖这些情况,那么您的代码就可以了

据我所见,您正在一维上模拟二维数组。这很难理解,也很容易搞乱。您最好使用二维数组和一些嵌套循环:

    int[][] matrix = new int[size][size];

    //create matrix
    for (int i=0; i<size; i++) {
        for (int j=0; j<size; j++) {
            matrix[i][j] = in.nextInt();
        }
    }
    // and so on...
int[][]矩阵=新的int[size][size];
//创建矩阵

对于(inti=0;我只是想象一下你的例子,你在一个无限循环中运行:矩阵大小=2。你认为
i+=(大小-2)
将使
i
增加?请注意,每一个大于2的尺寸都将再次工作。不,但如果尺寸大于等于3,则是,但条件是
i@KevinEsche明白了-我想我现在看到了问题——想象一下你的例子,你在一个无限循环中运行:矩阵大小=2。你认为
I+=(大小-2)
将使
i
增加?请注意,每一个大于2的尺寸都将再次工作。不,但如果尺寸大于等于3,则是,但条件是
i@KevinEsche明白了-我想我现在明白了