gpt4 book ai didi

java - 为什么 nextInt() 方法不起作用?

转载 作者:行者123 更新时间:2023-12-01 15:29:13 25 4
gpt4 key购买 nike

我已经按照 Java 编程简介(综合,6e)中所示的方式输入了它。它涉及读取整数输入并将用户输入与存储在名为“lottery.txt”的文本文件中的整数进行比较

An image of the folder and input file图片外部链接:/image/egPWq.jpg

这是我的代码:

import java.util.Scanner;

public class LotteryNumbers {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);

// Defines and initializes an array with 100 double elements called isCovered.
boolean[] isCovered = new boolean[99];

// Prompts user for input and marks typed numbers as covered.
int number = input.nextInt();
while (number != 0) {
isCovered[number - 1] = true;
number = input.nextInt();
}

// Checks whether all numbers are covered.
boolean allCovered = true;
for (int i = 0; i < 99; i++)
if (!isCovered[i]) {
allCovered = false;
break;
}

// Outputs result.
if(allCovered) {
System.out.println("The tickets cover all numbers."); }
else {
System.out.println("The tickets do not cover all numbers."); }

}
}

我怀疑问题出在数组的声明中。由于lottery.txt没有100个整数,因此数组中索引10到99的元素留空。这可能是问题所在吗?

为什么程序在没有请求用户输入的情况下终止?

可能的解决方案:

想了想,我相信我明白了问题所在。程序终止,因为在输入lottery.txt 时,它在EOF 处取了0。此外,程序显示所有未覆盖的数字,因为从11 到100 的元素都是空白。这是正确的吗?

最佳答案

该程序被编写为继续读取数字,直到 nextInt() 返回零。但是输入文件中没有零,因此循环将继续执行到文件末尾...然后在尝试读取 EOF 位置处的整数时失败。

解决方案是使用Scanner.hasNextInt()来测试是否应该结束循环。

<小时/>

并且,确保从输入文件重定向标准输入;例如

    $ java LotteryNumbers < lottery.txt

...因为您的程序期望输入出现在标准输入流上。

关于java - 为什么 nextInt() 方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765053/

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