首先添加第二个字符串后,无法读取double或int [英] Unable to read double or int after first adding second string

查看:214
本文介绍了首先添加第二个字符串后,无法读取double或int的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我非常新的java,我有一个小问题。我正在添加各种双精度和整数,并尝试从文件中读取数据,但是当我尝试从第二个字符串之后的文件读取数据时,我给了一个错误。第二个字符串之前的任何内容都可以。



这是我的代码;

  import java.util。*; 
import java.io. *;

public class Assignment3 {

static Sc​​anner console = new Scanner(System.in);

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


扫描器inFile = new Scanner(新的FileReader(AssistantHoursAndRates.txt));

String Unit1 = inFile.nextLine();
double NumberofAssistantsUnit1 = inFile.nextDouble();
double Unit1Assistant1hours = inFile.nextDouble();
double Unit1Assistant1rate = inFile.nextDouble();
double Unit1Assistant2hours = inFile.nextDouble();
double Unit1Assistant2rate = inFile.nextDouble();
double Unit1Assistant3hours = inFile.nextDouble();
double Unit1Assistant3rate = inFile.nextDouble();
double Unit1Assistant4hours = inFile.nextDouble();
double Unit1Assistant4rate = inFile.nextDouble();

String Unit2 = inFile.nextLine();
double NumberofAssistantsUnit2 = inFile.nextDouble();

当我尝试在第二个字符串之后读取任何内容时,我会收到此错误;

 线程main中的异常java.util.InputMismatchException 
在java.util.Scanner.throwFor(未知来源)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Assignment3.main(Assignment3.java:28)

我不确定为什么我收到此错误,任何帮助将不胜感激,谢谢。



这是正在询问的人的输入文件;

  Unit One 
4
32 8
38 6
38 6
16 7

单位二
0

单位三
2
36 7
36 7

单位四
6
32 6.5
32 6.5
36 6.5
36 6.5
38 6.5
38 6.5

单位五
4
32 6.5
32 8
32 7
32 8

单位六
5
38 7
30 6.5
24 8
24 8
24 8

U nit七
0

单位八
1
40 12

单位九
5
24 8
24 6.5
30 6.5
24 7
32 7


解决方案

我们假设你的文件看起来像这样

  Unit1 
10.00
40.00
15.00
40.00
15.00
40.00
15.00
40.00
15.00
单位1
10.00
40.00
15.00
40.00
15.00
40.00
15.00
40.00
15.00

我在之后添加了一个 inFile.nextLine() double Unit1Assistant4rate = inFile.nextDouble(); ,它对我来说可以正常工作。在我添加之前,我得到了你所做的相同的异常。但现在没关系。

  String Unit1 = inFile.nextLine(); 
double NumberofAssistantsUnit1 = inFile.nextDouble();
double Unit1Assistant1hours = inFile.nextDouble();
double Unit1Assistant1rate = inFile.nextDouble();
double Unit1Assistant2hours = inFile.nextDouble();
double Unit1Assistant2rate = inFile.nextDouble();
double Unit1Assistant3hours = inFile.nextDouble();
double Unit1Assistant3rate = inFile.nextDouble();
double Unit1Assistant4hours = inFile.nextDouble();
double Unit1Assistant4rate = inFile.nextDouble();

inFile.nextLine();

String Unit2 = inFile.nextLine();
double NumberofAssistantsUnit2 = inFile.nextDouble();
double Unit2Assistant1hours = inFile.nextDouble();
double Unit2Assistant1rate = inFile.nextDouble();
double Unit2Assistant2hours = inFile.nextDouble();
double Unit2Assistant2rate = inFile.nextDouble();
double Unit2Assistant3hours = inFile.nextDouble();
double Unit2Assistant3rate = inFile.nextDouble();
double Unit2Assistant4hours = inFile.nextDouble();
double Unit2Assistant4rate = inFile.nextDouble();

System.out.println(This works fine);

在我添加了 inFile.nextLine()。该异常指向此行 double NumberofAssistantsUnit2 = inFile.nextDouble(); 。所以我假设代码的第一部分工作。只是当程序试图读取第二组文本时, String Unit2 = inFile.nextLine(); nextDouble()作为字符串。所以下一行将是 Unit2 ,而不是您期待的 double 。当结合 String s和其他值类型的读取时,会发生这种情况。我喜欢逐行阅读并分割,以避免这个问题。



在使用文件OP编辑后编辑

尝试这个代码。这是可运行的为我工作只需替换文件名

  import java.io.FileNotFoundException; 
import java.io.FileReader;
import java.util.Scanner;

public class Assignment3 {

static Sc​​anner console = new Scanner(System.in);

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

扫描仪输入= new Scanner(新的FileReader(aptunits.txt));

int unit = 1;
while(input.hasNextLine()){
String line = input.nextLine();
System.out.println(line);

double total = 0;

int助手= input.nextInt();
System.out.println(助理人数+助理);
System.out.println(小时费率);
System.out.println(------------); (int i = 0; i< assistantants; i ++){
int hours = input.nextInt();

System.out.print(hours +);
double rate = input.nextDouble();
System.out.println(rate);
总+ =(小时*率);
}
System.out.println(Unit of Unit+ unit +is+ total);
System.out.println();
unit ++;

if(input.hasNextLine()){
input.nextLine();
input.next();
}

}
}
}


so I'm very very new to java and I'm having a slight problem. I'm adding various doubles and integers and trying to read data from a file, but when I try read data from the file after the second string, I am given an error. Anything before the second string is fine.

Here's my code;

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

public class Assignment3 {

static Scanner console = new Scanner (System.in);

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


Scanner inFile = new Scanner(new FileReader("AssistantHoursAndRates.txt"));

    String Unit1 = inFile.nextLine();
    double NumberofAssistantsUnit1 = inFile.nextDouble();
    double Unit1Assistant1hours = inFile.nextDouble();
    double Unit1Assistant1rate = inFile.nextDouble();
    double Unit1Assistant2hours = inFile.nextDouble();
    double Unit1Assistant2rate = inFile.nextDouble();
    double Unit1Assistant3hours = inFile.nextDouble();
    double Unit1Assistant3rate = inFile.nextDouble();
    double Unit1Assistant4hours = inFile.nextDouble();
    double Unit1Assistant4rate = inFile.nextDouble();

    String Unit2 = inFile.nextLine();
    double NumberofAssistantsUnit2 = inFile.nextDouble();

I am given this error when I try read anything after the second string;

Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)
at Assignment3.main(Assignment3.java:28)

I am unsure at to why I am receiving this error, any help would be appreciated, thanks.

Here is the input file for those who were asking;

Unit One
4
32 8
38 6
38 6
16 7

Unit Two
0

Unit Three
2
36 7
36 7

Unit Four
6
32 6.5
32 6.5
36 6.5
36 6.5
38 6.5
38 6.5

Unit Five
4
32 6.5
32 8
32 7
32 8

Unit Six
5
38 7
30 6.5
24 8
24 8
24 8

Unit Seven
0

Unit Eight
1
40 12

Unit Nine
5
24 8
24 6.5
30 6.5
24 7
32 7

解决方案

Let's say you file looks like this

Unit1
10.00
40.00
15.00
40.00
15.00
40.00
15.00
40.00
15.00
Unit1
10.00
40.00
15.00
40.00
15.00
40.00
15.00
40.00
15.00

I just added an inFile.nextLine() after double Unit1Assistant4rate = inFile.nextDouble(); and it works fine for me. Before I added it, I got the same Exception you did. But now it's fine.

    String Unit1 = inFile.nextLine();
    double NumberofAssistantsUnit1 = inFile.nextDouble();
    double Unit1Assistant1hours = inFile.nextDouble();
    double Unit1Assistant1rate = inFile.nextDouble();
    double Unit1Assistant2hours = inFile.nextDouble();
    double Unit1Assistant2rate = inFile.nextDouble();
    double Unit1Assistant3hours = inFile.nextDouble();
    double Unit1Assistant3rate = inFile.nextDouble();
    double Unit1Assistant4hours = inFile.nextDouble();
    double Unit1Assistant4rate = inFile.nextDouble();

    inFile.nextLine();

    String Unit2 = inFile.nextLine();
    double NumberofAssistantsUnit2 = inFile.nextDouble();
    double Unit2Assistant1hours = inFile.nextDouble();
    double Unit2Assistant1rate = inFile.nextDouble();
    double Unit2Assistant2hours = inFile.nextDouble();
    double Unit2Assistant2rate = inFile.nextDouble();
    double Unit2Assistant3hours = inFile.nextDouble();
    double Unit2Assistant3rate = inFile.nextDouble();
    double Unit2Assistant4hours = inFile.nextDouble();
    double Unit2Assistant4rate = inFile.nextDouble();

    System.out.println("This works fine");

Before I added the inFile.nextLine(). The exception pointed to this line double NumberofAssistantsUnit2 = inFile.nextDouble();. So I assumed the first part of code worked. It's just when the program tried to read the the second set of text, the String Unit2 = inFile.nextLine(); ate up the empty space after the nextDouble() as the String. So the next line would be Unit2 instead of the double you were expecting. This happens when combining the reading of Strings and other value types. I prefer to read line by line and split, to avoid this problem.

Edit after OP edit with file

Try this code out. It's Runnable. Works for me. Just replace the file name

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class Assignment3 {

    static Scanner console = new Scanner(System.in);

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

        Scanner input = new Scanner(new FileReader("aptunits.txt"));

        int unit = 1;
        while (input.hasNextLine()) {
            String line = input.nextLine();
            System.out.println(line);

            double total = 0;

            int assistants = input.nextInt();
            System.out.println("Number of Assistants " + assistants);
            System.out.println("Hours  Rate");
            System.out.println("------------");
            for (int i = 0; i < assistants; i++) {
                int hours = input.nextInt();
                System.out.print(hours + "     ");
                double rate = input.nextDouble();
                System.out.println(rate);               
                total += (hours * rate);
            }
            System.out.println("Total cost of Unit " + unit + " is " + total);
            System.out.println();
            unit++;

            if (input.hasNextLine()) {
                input.nextLine();
                input.next();
            }

        } 
    }
}

这篇关于首先添加第二个字符串后,无法读取double或int的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆