gpt4 book ai didi

java - 扫描仪对象一直等待输入

转载 作者:行者123 更新时间:2023-12-02 03:34:23 25 4
gpt4 key购买 nike

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

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));


}
}

上面的代码的工作原理是,它允许用户通过输入 N 作为大小来定义 NxN 矩阵 - 因此在大小 = 2 的情况下,用户将定义 4 个矩阵元素。然而,在对次对角线的代码进行注释后,扫描仪对象一直期望输入超过 4 个整数 - 我不知道为什么这会影响程序,因为我在到达该代码块之前关闭了输入流。

最佳答案

您编写了一个潜在的无限循环。 IE。如果 size 不大于 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...

关于java - 扫描仪对象一直等待输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613552/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com