我有一个代码,但我不明白为什么它不起作用。它找到最大的数字没有问题,根据这个逻辑,我想找到最小的,但程序找到了别的东西。我也无法理解找到数字的总和和数量的错误是什么。
public static void main(String[] args) {
try{
Scanner file = new Scanner(new File("test.txt"));
int lar= file.nextInt();
int min = file.nextInt();
int count=0;
// поиск наибольшего числа
while (file.hasNextInt()){
int number=file.nextInt();
if (number>lar) {
lar=number;
}
System.out.print(number+" "); //отображение чисел
}
// поиск наименьшего числа
while(file.hasNextInt()){
int number =file.nextInt();
if (number<min) {
min=number;
}
}
// количество чисел
while(file.hasNext()){
count++;
}
// сумма чисел
int total=0;
int sum=0;
while(file.hasNextInt()){
sum = file.nextInt();
total= sum+total;}
file.close();
System.out.println();
System.out.println("Наибольшее число: " + lar);
System.out.println("Наименьшее число " + min);
System.out.println("Количество чисел: "+ count);
System.out.println("Сумма чисел: "+ total);
}catch(IOException e){
System.out.println(e.getMessage());}
文本文件中的数字是: 1231 123 21 321 2 32 3 23 2 232 -23 123123123
编译器输出:
21 321 2 32 3 23 2 232 -23 123123123
Наибольшее число: 123123123
Наименьшее число 123
Количество чисел: 0
Сумма чисел: 0
您需要打开逻辑并了解 nextInt 的作用。它只是从文件中读取下一个数字。当文件被读到最后时,就没有什么要读的了,而且除了第一个之外,一直都没有工作。此外,最大值也被错误地搜索 - 第二个数字被跳过。
一般来说,所有动作都必须一次完成——读取数字,更新最大值、最小值、计数器和总和。