所以当我尝试执行大量输入时遇到问题。该程序的目标是打印出数组中的最小数字和最大数字。我的目标是输入 300 个数字,但我的终端拒绝接受这么高的数字。但是当我输入 100 个数字时,它工作得很好。有人可以解释一下当尝试处理大量输入时该程序出了什么问题,以及关于我可以做什么以使该程序运行的任何建议吗?
import java.util.Scanner;
class maxMinArray {
public static void main(String[] args) {
int input = 3;
int[] highLow = new int[input];
int highest = 0;
int lowest = 100000;
Scanner scan = new Scanner(System.in);
System.out.println("input data:");
for (int i = 0; i < input; i++) {
highLow[i] = scan.nextInt();
if (highLow[i] > highest) highest = highLow[i];
if (highLow[i] < lowest) lowest = highLow[i];
}
System.out.println("answer:");
System.out.println(highest + " " + lowest);
}
}
最佳答案
首先在 low[i] = high[i] = scan.nextInt();
之后添加 scan.nextLine()
。在 scan.nextInt()
之后,Scanner
的缓冲区中仍然存在回车符/换行符,这将导致下次尝试读取时出错...
so i copy pasted 300 ints when it asked for the input data and as soon as i pasted it
这会改变事情,尝试一些更像......
String text = scan.nextLine();
Scanner parse = new Scanner(text);
int i = 0;
while (parse.hasNextInt()) {
highLow[i] = parse.nextInt();
if (highLow[i] > highest) {
highest = highLow[i];
}
if (highLow[i] < lowest) {
lowest = highLow[i];
}
i++;
}
已更新
更好的解决方案可能是将所有数字放入一个文本文件中并读取该文本文件......
try {
Scanner parse = new Scanner(new File("Test.txt"));
int i = 0;
while (parse.hasNextInt()) {
highLow[i] = parse.nextInt();
if (highLow[i] > highest) {
highest = highLow[i];
}
if (highLow[i] < lowest) {
lowest = highLow[i];
}
i++;
}
System.out.println("answer:");
System.out.println(highest + " " + lowest);
} catch (FileNotFoundException exp) {
exp.printStackTrace();
}
您可以使用Scanner
提示用户输入文本文件的名称,而不是对其进行硬编码
关于java - 程序无法运行(maxMinArray),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26794315/