【发布时间】:2016-10-10 09:22:19
【问题描述】:
在接下来的 4 小时内我真的需要帮助。我正在尝试创建一个接收 int 并输出该大小的帕斯卡三角形的程序。但是,一旦我尝试通过扫描仪获取“ROW”的值,我就会收到以下错误消息:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Pascal.main(Pascal.java:9)
如果我将 ROW 与 int "max" 一起定义为静态 int,则该程序看起来很好,但是一旦我将 Scanner 与它一起使用,问题就会再次出现。提前致谢。
import java.util.*;
import java.util.Scanner;
public class Pascal {
private static int max = 0;
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int ROW = kb.nextInt();
int[][] pascal = new int[ROW + 1][];
pascal[1] = new int[1 + 2];
pascal[1][1] = 1;
for (int i = 2; i <= ROW; i++) {
pascal[i] = new int[i + 2];
for (int j = 1; j < pascal[i].length - 1; j++) {
pascal[i][j] = pascal[i - 1][j - 1] + pascal[i - 1][j];
String str = Integer.toString(pascal[i][j]);
int len = str.length();
if (len > max)
max = len;
}
}
for (int i = 1; i <= ROW; i++) {
for (int k = ROW; k > i; k--)
System.out.format("%-" + max + "s", " ");
for (int j = 1; j < pascal[i].length - 1; j++)
System.out.format("%-" + (max + max) + "s", pascal[i][j]);
System.out.println();
}
}
}
【问题讨论】:
-
投票关闭为“不清楚”,因为如果您正确运行程序,您将不会得到此异常。而且由于您不这样做,并且由于您没有告诉 use 如何运行您的代码,因此不清楚无法正确回答。
-
对不起,我是编码新手。如何“正确运行我的程序”?我应该如何详细说明“如何”运行我的代码?
-
您可以使用任何 IDE 或控制台正确运行您的代码。不正确的是在线 IDE 之类的东西,因为它们需要预定义的输入值。 “我应该如何详细说明“如何”运行我的代码?”通过告诉使用 如何你实际运行你的代码。
-
我之前在执行时使用了 JCreator,并收到了相同的错误消息。但是,我现在在没有 JCreator 的计算机上,因此正在使用在线 IDE。尽管如此,错误消息是相同的。这是否清楚我如何运行我的代码?再次为我的无知道歉。