【发布时间】:2014-04-29 02:44:07
【问题描述】:
我之前问过这个问题,但被要求添加其他信息,之后就再也没有得到回复。提前抱歉。我不是想向网站或任何东西发送垃圾邮件。我只是在寻求帮助。
我在线程 "main" java.lang.NumberFormatException: For input string: "3 50" 在下面的代码中收到错误异常。我很难解决它。任何人都可以阐明它可能来自什么吗?根据我的理解,这通常意味着错误在第 3 行和第 50 行是否正确?
package report.generator;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import java.io.FileWriter;
import java.io.BufferedWriter;
import java.io.IOException;
public class ReportGenerator
{
public static void main(String[] args)
{
BufferedReader br = null;
BufferedWriter bw = null;
try
{
br = new BufferedReader(new FileReader("C:\\sprocketorders.txt"));
String line;
String element[] = new String[2];
int sum[] = new int[5];
File file = new File ("C:\\sprocketordersreport.txt");
while ((line = br.readLine()) != null)
{
element = line.split(" ");
switch(Integer.parseInt(element[0]))
{
case 1:
sum[0] = sum[0] + Integer.parseInt(element[1]);
break;
case 2:
sum[1] = sum[1] + Integer.parseInt(element[1]);
break;
case 3:
sum[2] = sum[2] + Integer.parseInt(element[1]);
break;
case 4:
sum[3] = sum[3] + Integer.parseInt(element[1]);
break;
case 5:
sum[4] = sum[4] + Integer.parseInt(element[1]);
break;
}
}
if (!file.exists())
{
file.createNewFile();
}
FileWriter fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);
bw.write("Spacely Sprockets\nTaking Sprockets into the Future\nSales Summary Report\nSprocket Number Total Quantity Sold\n");
for(int i = 0; i < sum.length; i++)
bw.write((i + 1) + "\t" + sum[i] + "\n");
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
if (br != null)
br.close();
if (bw != null)
bw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
这个程序是从文本文件中获取输入并以报告格式输出信息。
编辑:这是输入文件信息。看了之后,看来这可能是问题出在哪里。但我不完全确定。
3 50
2 20
2100
5 15
1 90
5 85
4 300
2 35
3100
它的格式与文本文件中的完全不同。左边的整数和右边的整数之间有更多的空格。
Spacely Sprockets
Taking Sprockets into the Future
Sales Summary Report
Sprocket Number Total Quantity Sold
1 90
2 155
3 50
4 300
5 100
这是我想要得到的输出报告。左边的每个数字都是一个链轮编号。右边的数字反映了每个链轮的销售数量。
这是尝试运行时的完整异常:
Exception in thread "main" java.lang.NumberFormatException: For input string: "3 50"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.parseInt(Integer.java:527)
at report.generator.ReportGenerator.main(ReportGenerator.java:32)
【问题讨论】:
-
你期望每行输入的输出是什么,为什么?此外,这是您的第一行输入。请发布您的整个异常,它会告诉您源代码中的哪一行抛出异常。
-
"3 50" 不是数字;这是两个数字。如果您遇到该错误,这就是您要传递的内容。
-
而且...刚刚抓住了你的最后一段。您是在告诉它拆分为一个单独的空间……这不是您文件中的内容。
-
Java 作者一定在哭。他们花了这么多时间来建立一个有用且信息丰富的异常系统,但人们甚至没有阅读它们,或者认为它们足够重要,无法发布他们的编码问题......
-
为了帮助您阅读异常输出,异常来自第 65 行。
标签: java