![](/img/trans.png)
[英]how to convert a string value to integer without using Integer.parseInt()?
[英]How to convert string to integer with parseInt?
我有以下代码:
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]),但是它不起作用。 而且什么也没有发生,因此代码得以构建,但从此退出。
根据您显示给我们的源代码,问题在于输入文件和您尝试读取的程序之间存在格式不匹配。
该程序一次读取一行文件,然后使用单个分号(无空格!)作为文件分隔符将其拆分为多个字段。 然后,它尝试将每个分割线的前三个字段解析为整数。
为此,必须满足以下条件:
ArrayIndexOutOfBound
异常。) -?[0-9]+
,即可选的负号,后跟一个或多个十进制数字。 Integer.MIN_VALUE
和Integer.MAX_VALUE
之间。 详细说明:
请注意,如果不满足上述任何约束,则运行时系统将引发异常。 不幸的是,您用以下代码包围了代码:
try {
...
}
catch (Exception e) {
}
通过捕获异常并在处理程序块中不执行任何操作,基本上可以忽略所有异常。 您是在对Java说“如果有任何问题,请不要告诉我!”。 因此,自然,Java不会告诉您出了什么问题。
永远不要这样 。 这被称为异常压缩,这是一个非常糟糕的主意1 。
有两种解决方法:
打印或记录堆栈跟踪; 例如
catch (Exception e) { e.printStackTrace(); }
删除try / catch,然后向main
方法的签名中添加throws IOException
。
(您不能只删除try / catch,因为new Scanner(fajl, "UTF8")
抛出IOException
。这是一个已检查的异常,因此必须在方法签名中进行处理或声明。)
正确处理了异常后,您将获得一条异常消息和stacktrace,告诉您实际出了什么问题。 阅读,理解并修复程序。
1-就像点击“烦人”的红灯一样,表示您的汽车油位低!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.