我有此代码:
public static void main(String[] args) {
List<Valtozas> lista = new ArrayList<Valtozas>();
try {
File fajl = new File("c://data//uzemanyag.txt");
Scanner szkenner = new Scanner(fajl, "UTF8");
while (szkenner.hasNext()) {
String sor = szkenner.nextLine();
String [] darabok = sor.split(";");
String szoveg = darabok[0];
Valtozas valtozas = new Valtozas(Integer.valueOf(darabok[0]), Integer.valueOf(darabok[1]), Integer.valueOf(darabok[2]));
lista.add(valtozas);
}
}
catch (Exception e) {
}
//3.FELADAT
System.out.println("3.Feladat: Változások száma: "+lista.size());
}
}
在这里,我想将String转换为int,但是我不能。我尝试了Integer.Valueof(darabok [0]),但是它不起作用。而且什么也没有发生,因此代码已构建,但随后退出。
答案 0 :(得分:0)
根据您显示给我们的源代码,问题在于输入文件和您尝试读取的程序之间存在格式不匹配。
程序一次读取一行文件,然后使用单个分号(无空格!)作为文件分隔符将其拆分为多个字段。然后,它尝试将每个分割线的前三个字段解析为整数。
要使其正常工作,必须满足以下条件:
ArrayIndexOutOfBound
异常。)-?[0-9]+
,即一个可选的负号,后跟一个或多个十进制数字。Integer.MIN_VALUE
和Integer.MAX_VALUE
之间。详细说明:
请注意,如果不满足上述任何约束,则运行时系统将引发异常。不幸的是,您用以下代码包围了代码:
try {
...
}
catch (Exception e) {
}
通过捕获异常并在处理程序块中不执行任何操作,基本上可以忽略所有异常。您是在对Java说“如果有任何问题,请不要告诉我!”。因此,自然,Java不会告诉您出了什么问题。
永远不要这样做。这被称为异常压缩,这是一个非常糟糕的主意 1 。
有两种解决方法:
打印或记录堆栈跟踪;例如
catch (Exception e) {
e.printStackTrace();
}
删除try / catch,并将throws IOException
添加到您的main
方法的签名中。
(您不能 just 删除try / catch,因为new Scanner(fajl, "UTF8")
抛出IOException
。这是一个已检查的异常,因此必须在方法签名中进行处理或声明。)
一旦正确处理了异常,您将收到异常消息和stacktrace,告诉您实际出了什么问题。阅读,理解并修复程序。
1-就像点击“讨厌的”红灯一样,表明您的汽车油位低!