【问题标题】:How do you parse input from a text file in JAVA?如何在 JAVA 中解析文本文件的输入?
【发布时间】:2016-03-28 06:58:55
【问题描述】:

我试图从我的 input.txt 文件中解析字符串,但每次都会抛出 NumberFormatException。我已经添加了到目前为止的所有代码。 我也尝试过 .trim 。我对 Java 中的文本文件非常陌生;因此,我不知道这里出了什么问题。但是,任何帮助将不胜感激。

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.NoSuchElementException;
import java.util.Scanner;

public class Lab5_Exceptions_Redo extends Exception {

    public static void main(String[] args) throws FileNotFoundException {

        String file = "inputt.txt";
        String file1 = "outputt.txt";
        String file2 = "errorr.txt";

        PrintWriter errorr = new PrintWriter(file2);

        PrintWriter inputt = new PrintWriter(file);
        inputt.println(15951);
        // int whatever = Integer.parseInt(file);
        // System.out.print(whatever);
        inputt.close();
        Scanner scan = new Scanner(file);
        String number = scan.nextLine();
        int num = Integer.parseInt(number.trim());
        System.out.printf("%d", num);

        PrintWriter outputt = new PrintWriter(file1);
        outputt.println(num);
        outputt.close();
        // inputt.close();

        scan.close();
        // System.out.printf("%d", num);

        try {

        } catch (InputMismatchException e) {
            errorr.println("There was an input mismatch error.");
        } catch (NoSuchElementException e) {
            errorr.println("There is no such element.");
        } catch (UnsupportedOperationException e) {
            errorr.println("An unsupported operation occured.");
        } catch (NumberFormatException e) {
            System.out.println(e.getMessage());
            e.printStackTrace();
        }
        errorr.close();

    }
}

【问题讨论】:

  • 您是否尝试过调试问题?当您尝试打印 num 时会看到什么?

标签: java parseint numberformatexception


【解决方案1】:

你做错了。在Scanner 构造函数中,您应该传递File 对象而不是String 对象。由于您正在传递字符串“inputt.txt”,因此它试图解析该字符串,结果您得到了 NFE。 试试这个

Scanner scan = new Scanner(new File(file));

【讨论】:

    【解决方案2】:

    在执行nextLine() 时,您必须同时获取空格和输入。使用trim() 函数去除任何空格。

    int num = Integer.parseInt(number.trim());
    

    或者,您可以尝试使用nextInt() 而不是nextLine()

    这里是parseInt()的JAVA Doc:

    将字符串参数解析为有符号十进制整数。字符串中的字符必须都是十进制数字,除了第一个字符可以是ASCII减号'-'('\u002D')表示负值或ASCII加号'+'('\u002B')表示正值。返回结果整数值,就好像参数和基数 10 作为 parseInt(java.lang.String, int) 方法的参数一样。

    【讨论】:

    • 我尝试了 .trim,不幸的是它不起作用 \: 。我对在 Java 中创建文本文件非常陌生,这就是为什么我很困惑为什么它不会解析输入文本文件中的整数。
    • 这不是真正的根本原因
    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多