【问题标题】:Pascal's Triangle - Exception in thread "main" java.util.NoSuchElementException帕斯卡三角 - 线程“主”java.util.NoSuchElementException 中的异常
【发布时间】: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。尽管如此,错误消息是相同的。这是否清楚我如何运行我的代码?再次为我的无知道歉。

标签: java exception


【解决方案1】:

这是使用矩阵的可能解决方案...

import java.util.Scanner;

public class PascalTriangle {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Type N: ");
        pascalTriangle(scanner.nextInt());
        scanner.close();
    }

    public static void pascalTriangle(final int N) {
        int[][] triangle = new int[N][N];

        for (int i = 0; i < N; i++) {
            for (int j = 0; j <= i; j++) {
                if (j == 0)
                    triangle[i][0] = 1;
                else
                    triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
                System.out.print(triangle[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

输出:

Type N: 13
1   
1   1   
1   2   1   
1   3   3   1   
1   4   6   4   1   
1   5   10  10  5   1   
1   6   15  20  15  6   1   
1   7   21  35  35  21  7   1   
1   8   28  56  70  56  28  8   1   
1   9   36  84  126 126 84  36  9   1   
1   10  45  120 210 252 210 120 45  10  1   
1   11  55  165 330 462 462 330 165 55  11  1   
1   12  66  220 495 792 924 792 495 220 66  12  1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 2012-07-13
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多