如何在java中解析文本文件的输入?

iyr7buue  于 2021-07-13  发布在  Java
关注(0)|答案(2)|浏览(364)

我试图解析input.txt文件中的字符串,但每次都会抛出numberformatexception。我已经添加了到目前为止所有的代码。我试过了。修剪也一样。我对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();

    }
}
4jb9z9bj

4jb9z9bj1#

你犯了个错误。在 Scanner 你应该通过的 File 对象不是 String 对象。由于您正在传递字符串“input.txt”,它试图解析这个字符串,因此您得到了nfe。试试这个 Scanner scan = new Scanner(new File(file));

j8yoct9x

j8yoct9x2#

在执行时,必须将空白与输入一起获取 nextLine() . 使用 trim() 函数以除去任何空白。

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

或者,您可以尝试使用 nextInt() 而不是 nextLine() .
这是java文档 parseInt() :
将字符串参数解析为有符号十进制整数。字符串中的字符必须全部为十进制数字,但第一个字符可以是ascii减号“-”('\u002d')以表示负值,也可以是ascii加号“+”('\u002b')以表示正值。返回结果的整数值,就像参数和基数10作为parseint(java.lang.string,int)方法的参数一样。

相关问题