当我运行应用程序时,它会在控制台上返回错误代码。问题是我无法在此行上从字符串转换为int
:
int ogrNo=Integer.parseInt(row[0]);
这是我正在使用的方法:
public void OgrDosyaRead() {
try {
File file = new File("D:\\dosya.txt");
BufferedReader buf = new BufferedReader(new FileReader(file));
String line = null;
while((line=buf.readLine())!= null) {
String[] row = line.split(",");
int No=Integer.parseInt(row[0]);
String Name=row[1];
String Surname=row[2];
String lesson1=row[3];
String lesson2=row[4];
put(No,Name,Surname,lesson1,lesson2);
}
buf.close();
}
catch (Exception error) {
error.printStackTrace();
}
}
public void put(int No,String Name,String Surname,String lesson1,Strşng lesson2) {
像这样的错误消息;
java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Ogrenciler.HashTable.OgrDosyaRead(HashTable.java:178)
at Ogrenciler.MainClass.main(MainClass.java:38)
我的文件dosya.txt看起来像这样:
1,Helen,Dobre,Lesson1,Lesson2
答案 0 :(得分:2)
public static void main(final String[] args)
{
final String data = "1,Helen,Dobre,Lesson1,Lesson2";
final String[] row = data.split(",");
final int c1 = Integer.parseInt(row[0]);
System.out.println("c1 = " + c1);
}
c1 = 1
您的问题在您的数据中存在,可能隐藏在行的1,
部分中某种类型的空格字符,或者文件使用与Java默认值不同的编码进行编码。
System.out.println(String.format("%040x", new BigInteger(1, data.getBytes(Charset.defaultCharset()))));
这就是您给出的示例的输出:
312c48656c656e2c446f6272652c4c6573736f6e312c4c6573736f6e32
如果你得到不同的东西,那么很可能文件不是 使用与
Charset.defaultCharset()
相同的编码进行编码。您 必须找到文件实际编码的Charset
, 这取决于用于创建.txt
文件的应用程序。 如果它是Windows特定的东西,它可能是一些Windows 默认编码,不 Java默认值。
答案 1 :(得分:-1)
当我改变我的代码时:
int ogrNo = Integer.parseInt(row[0].replaceAll("[^0-9]", ""));
它现在有效。