gpt4 book ai didi

java - 从文本文件中解析数字

转载 作者:行者123 更新时间:2023-12-04 04:43:40 25 4
gpt4 key购买 nike

只是想知道我在这里做错了什么。我正在尝试从文件中读取并解析一些数据。我不断收到错误“java.lang.NumberFormatException”,它无法解析数字。我知道我使用 getNextDouble() 或 get nextInt() 但我试图使代码尽可能通用。任何想法将不胜感激。泰。

这是我的文本文件中的一行示例:

       foo Bar 19.35 55 987.0054 4 

public void readFile(){
int i=0;
String line;

try{
fileIn = new Scanner(new File("pa1Names.txt"));
}catch(Exception e){
System.out.println("Fatal Error: File was not opened");
}

while(i<names.length && fileIn.hasNext()){
line = fileIn.nextLine();
StringTokenizer st = new StringTokenizer(line);
int m = st.countTokens();

names[i] = st.nextToken();

for (int k = 0; k<m-5; k++)
{
names[i] = names[i] + " " + st.nextToken();
}

reals[i][0] = Double.parseDouble(st.nextToken());
ints[i][0] = Integer.parseInt(st.nextToken());
reals[i][1] = Double.parseDouble(st.nextToken());
ints[i][1] = Integer.parseInt(st.nextToken());

i++;
}//end while
fileIn.close();
}

最佳答案

在您的 try/catch 块中,您需要在 catch 块中放入 return 语句,或者您需要将其余代码移到 try 块内(如果文件打开失败,即使您捕获到错误, fileIn.HasNext 肯定会失败,因为文件仍未打开)。

我还复制并粘贴了您的代码并通过调试器运行它,我认为您的第一个 for 循环已关闭,因为 names[i] 如下:

"foo"//names[i] = st.nextToken();

"foo bar"//names[i] = names[i] + ""+ st.nextToken();

"foo Bar 19.35"//names[i] = names[i] + ""+ st.nextToken();

reals[i][0] 然后读入整数 (55),因此值为 55.0
然后 ints[i][0] 抛出异常,因为下一个数字是 double 而不是 int。

所以你的 for 循环应该是:

            for (int k = 0; k<m-5; k++)
{
name = name+ " " + st.nextToken();
}

关于java - 从文本文件中解析数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com