gpt4 book ai didi

java - 试图从文件中读取以计算出平均值 - java

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:58:55 24 4
gpt4 key购买 nike

我目前正在重新完成年初设定的任务,但我真正没有掌握的一件事是循环和从文件读取/写入文件的概念。手头的任务是从文本文件中读取一堆工资,将它们相加并计算平均值,然后在控制台中打印出结果。

到目前为止我有这个:

import java.util.*;
import java.io.*;

public class loopingSalaryTotal {
public static void main (String[] args) throws IOException {
int [] salaries = new int[100];
Scanner scan = new Scanner("salaries1.txt");
int index = 0;

while (scan.hasNext()) {
salaries[index]=(scan.nextInt());
index++;
}

for (int i = 0; i < index; i++) {
System.out.println(salaries[i]);
}

scan.close();
}
}

它抛出了这个错误信息:

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at loopingSalaryTotal.main(loopingSalaryTotal.java:18)

此外,我完全理解我离实际将数字相加然后计算平均值还差得很远,但如果有人能在正确的方向上插入我,我将不胜感激。

以下是来自 input.txt 的一些示例输入:

17283
12312
12312
12314
43242
64363
12364
74534

最佳答案

如果你只想要平均值,那么你不需要存储每个工资。相反,在最后计算平均值之前保留总计:

import java.util.*;
import java.io.*;

public class loopingSalaryTotal {
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(new File("salaries1.txt"));
int items = 0;
double total = 0;

while (scan.hasNextInt()) {
// add the next salary to the total
total += scan.nextInt();
// increase the number of encountered salaries by 1
items++;
}
double average = total/items;
System.out.println("average:" + average);

scan.close();
}
}

你的问题也是你应该使用Scanner.hasNextInt .这是因为 Scanner.hasNext 可能会返回 true,即使您的文件中不再有整数。例如,如果您的文件是

125
172
199
zalgo_calls_your_name

达到 199 后,Scanner.hasNext 将返回 true。但是,199 之后没有整数——只是一个字符串。因此,当您在循环中调用 Scanner.nextInt 时,会抛出异常,因为找不到 int。

关于java - 试图从文件中读取以计算出平均值 - java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31023678/

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