我要做的是让此代码询问2个整数输入,从名为'temps.txt'的文件中读取数据,并输出处理的天数以及处理的平均温度。问题是我收到了这个错误
Input the maximum temperature.
java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:840)
at java.util.Scanner.next(Scanner.java:1461)
at java.util.Scanner.nextInt(Scanner.java:2091)
at java.util.Scanner.nextInt(Scanner.java:2050)
at TempReader.main(TempReader.java:15)
You did not input a valid integer.
每当我尝试运行它时。到目前为止,我的代码看起来像这样:
import java.util.Scanner;
import java.io.File;
public class TempReader{
public static void main(String[] args) throws Exception {
File myFile = new File("temps.txt");
Scanner input = new Scanner(myFile).useDelimiter(",");
while (true){
System.out.println("Input the maximum temperature.");
try {
int maxTemp = input.nextInt();
}
catch (Throwable t) {
t.printStackTrace();
System.out.println("You did not input a valid integer.");
break;
}
System.out.println("Input the minimum temperature.");
try {
int minTemp = input.nextInt();
}
catch (Throwable t) {
t.printStackTrace();
System.out.println("You did not input a valid integer.");
break;
}
}
}
}
temps txt文件看起来像这样
04/01 / 2013,10
04/02 / 2013,20
04/03 / 2013,30
04/04 / 2013,40
04/05 / 2013,50
04/06 / 2013,60
我已经尝试过使用/和作为分隔符,并且都不起作用,是否有可能有2个,或者我是否还要做其他事情?
(是的,我可以让它完成上面提到的过程,我需要帮助的是这个错误,因为我不知道是什么导致它)
答案 0 :(得分:1)
检查您的数据文件以及您要阅读的内容。
04/01/2013
不是整数!
<强>更新强>
使用Date d = new SimpleDateFormat("MM/dd/yy").parse(input.next());
获取您的日期,然后使用nextInt
获取温度。此外,您似乎在查找文件中的最大和最小临时值,但每天只有一个临时值。您尝试读取最小临时值将始终抛出异常,因为它不存在。
答案 1 :(得分:0)
我对Scanner
一无所知,但我知道这样做的老式方式,更重要的是,我知道如何让它发挥作用。这是代码:
public class TempReader {
public static void main(String[] args) throws IOException {
File myFile = new File("temps.txt");
BufferedReader input = new BufferedReader(new FileReader(myFile));
String line;
while ((line = input.readLine()) != null) {
StringTokenizer tok = new StringTokenizer(line, ",");
System.out.println("Input the maximum temperature.");
try {
int maxTemp = Integer.parseInt(tok.nextToken());
} catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("You did not input a valid integer.");
break;
}
System.out.println("Input the minimum temperature.");
try {
int minTemp = Integer.parseInt(tok.nextToken());
} catch (NumberFormatException e) {
e.printStackTrace();
System.out.println("You did not input a valid integer.");
break;
}
}
}
}
这是对您的计划的简单修改,使用BufferedReader
,StringTokenizer
和Integer.parseInt
代替Scanner
,我无法理解这一点。< / p>
答案 2 :(得分:0)
public static void main(String[] args) throws Exception {
File myFile = new File("C:/temps.txt");
Scanner input = new Scanner(myFile);
String linrread = null;
try {
while ((linrread = input.nextLine()) != null) {
System.out.println("linrread ."+ linrread);
if (linrread.indexOf(",") != -1) {
String[] split = linrread.split(",");
String date = split[0];
String temp = split[1];
System.out.println("date :" + date + " temp: " + temp);
}
}
} catch (NoSuchElementException t) {
t.printStackTrace();
System.out.println("Reached end of the file.");
}
}
此代码将读取您的文件并从文件中获取元素。你必须修改它以符合你的要求。