-2

我想做的是让这段代码要求输入 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 个,或者我将不得不做其他事情?

(是的,我可以让它完成我上面提到的过程,我需要帮助的是这个错误,因为我不知道是什么原因造成的)

4

3 回答 3

1

检查您的数据文件以及您要读取的内容。

04/01/2013不是整数!

更新

用于Date d = new SimpleDateFormat("MM/dd/yy").parse(input.next());获取您的日期,然后使用 获取您的温度nextInt。此外,您似乎正在文件中寻找最大和最小临时工,但每天只有一个临时工。您尝试读取 min temp 将始终引发异常,因为它不存在。

于 2013-07-28T23:44:02.703 回答
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;
            }
        }
    }
}

这是对您的程序的直接修改,使用BufferedReaderStringTokenizerInteger.parseInt代替Scanner,我永远无法理解。

于 2013-07-28T23:42:37.543 回答
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.");
        }

    }

此代码将读取您的文件并从文件中获取元素。您必须修改它以适应您的要求。

于 2013-07-28T23:55:51.333 回答