java - 帕斯卡三角形 - 线程 "main"java.util.NoSuchElementException 中出现异常

标签 java exception

在接下来的 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();
        }

    }
}

最佳答案

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

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

关于java - 帕斯卡三角形 - 线程 "main"java.util.NoSuchElementException 中出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823214/

相关文章:

java - 用于将文件转换为 PDF 的 API

java - 子类可以引用其父类(super class)的类型吗?

java - 如何从命令行读取数组并使用JAVA中的通用方法显示它们?

c++ - STL 中的错误代码是否有任何异常?

java - 抛出异常后的空白消息对话框

java - 通用异常处理

java - 在程序中的任意点生成 Java 堆栈跟踪

java - 依赖于另一个项目的 gradle 项目是否获取库?

java - 除了用于日志记录目的之外,还有处理 selenium 异常的要点吗?

java - 为什么 Thymeleaf 代码在 HTML 的头部部分不起作用,但在正文中却能正常工作