需要从文件中读取 String 和 Double

Need to read String and Double from file

我在尝试从 txt 文件中读取 String 和 Double 时遇到了一些问题。 这是我的 txt 文件:

Mike 300.50
John 260
Lisa 425.33

这是我用来阅读它们的代码:

reader = new Scanner();
while(reader.hasNext()){
    name= reader.next();
    salary = reader.nextDouble();
    System.out.println(name + " " + salary + "\r\n");
}

每当我 运行 这段代码时,Exception in thread "main" java.util.InputMismatchException 就会出现,告诉我问题出在 nextDouble()

有人知道怎么解决吗?

你可以这样试试:

while(reader.hasNextLine()){
    String[] values = reader.nextLine().split("\s+");
    name= values[0];
    salary = Double.valueOf(values[1]);
    System.out.println(name + " " + salary + "\r\n");
}

你可以使用java.io.StreamTokenizer来读取String和double。 StreamTokenizer 将文件拆分为具有合适数据类型的标记。 通过使用一些常量,您可以识别令牌类型。 像 TT_NUMBER,TT_WORD

File f=new File("path of file");
StreamTokenizer st=new StreamTokenizer(new FileInputStream(file));
while(st.nextToken()!=StreamTokenizer.TT_EOF)   //getting contents of file{
    switch(st.ttype)
    {
        case StreamTokenizer.TT_EOF: break;
        case StreamTokenizer.TT_NUMBER://it will read number always in double data type
            no=st.nval;
        break;
        case StreamTokenizer.TT_WORD:
            name=st.nval;
        break;
    }}
reader = new Scanner();
while(reader.hasNext()){
    name= reader.next();       
    salary = reader.nextDouble();
    System.out.println(name + " " + salary + "\r\n");
    reader.nextLine();
}

试试这个。发生的事情是扫描器在每次加倍后读取空行,所以 name 将是空行,它会读取(例如)John 作为薪水,并给你那个例外。 所以我所做的就是添加那一小行代码:reader.nextLine(); 这样它就可以跳过那行空行。希望这可以帮助。