【问题标题】:Trying to read from text file试图从文本文件中读取
【发布时间】:2018-01-29 12:34:18
【问题描述】:

我正在尝试从文本文件中读取以下内容:

12
650 64 1
16 1024 2

我的尝试:

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

class Test{

    public static void main(String[] args){
        String filnavn = "regneklynge.txt";
        Scanner innFil = null;
        try {
            File fil = new File(filnavn);
            innFil = new Scanner(fil);
            while (innFil.hasNextLine()) {
                String linje = innFil.nextLine(); 
                int tall = Integer.parseInt(linje);
                System.out.println(tall);
            }
        } catch(FileNotFoundException e) {
            System.out.println("Filen kunne ikke finnes");
        }
    }
}

第一个数字(12)工作正常,但后来我明白了

Exception in thread "main" java.lang.NumberFormatException: For input string: "650 64 1"

【问题讨论】:

  • “它不起作用” .. 你能更具体一点吗?
  • 你发布的第一个版本,用s.hasNext() 代替innFil.nextLine(),解决了你现在问的问题。

标签: java list file text-files java.util.scanner


【解决方案1】:

建议:

  • 您需要两个 while 循环,一个嵌套在另一个内部
  • 第一个,外循环,你循环while (innFile.hasNextLine()) {...}
  • 在这个循环中你调用一次String linje = innFile.nextLine();
  • 然后创建第二个 Scanner 对象,Scanner lineScanner = new Scanner(linje);
  • 并创建第二个 inner while 循环,循环 while (lineScanner.hasNextInt() {...}
  • 在这个循环内部,通过int tall = lineScanner.nextInt();提取一个int
  • 并将其放入您的 ArrayList。
  • 请务必在退出内部 while 循环之后和退出外部循环之前调用 lineScanner.close();

【讨论】:

    【解决方案2】:

    只要你读的是整行:

    String linje = innFil.nextLine(); 
    

    您不能将它们视为整数,因为它已经是字符串

    int tall = Integer.parseInt(linje);
    // linje now has this = "650 64 1"
    

    所以这会引发异常: java.lang.NumberFormatException

    这是一种打印数字的方法:

    import java.util.Scanner;
    import java.io.*;
    
    class Test{
    
        public static void main(String[] args){
            String filnavn = "regneklynge.txt";
            Scanner innFil = null;
            try {
                File fil = new File(filnavn);
                innFil = new Scanner(fil);
                while (innFil.hasNextLine()) {
                    if (innFil.hasNextInt()) {
                        System.out.println(innFil.nextInt());
                    } else {
                        innFil.next();
                    }
                }
            } catch(FileNotFoundException e) {
                System.out.println("Filen kunne ikke finnes");
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多