gpt4 book ai didi

java - 不应该出现的奇怪的 NumberFormatException?

转载 作者:行者123 更新时间:2023-11-30 03:54:32 25 4
gpt4 key购买 nike

大家好,我有这个代码:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class ItemIdReader {
public int id;
public ItemIdReader(){

try {
BufferedReader br = new BufferedReader(new FileReader("itemList.txt"));
String line = br.readLine();
while (true) {
if (line == null)
break;

String[] split = line.split(" - ", 2);

String itemName = split[1];
id= Integer.parseInt(split[0]);
}
} catch (IOException i ) {

i.printStackTrace();
}
}

public int getId() {
return id;
}
}

当我尝试输出 id 时,出现此错误:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "1"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at ItemIdReader.<init>(ItemIdReader.java:19)
at Launcher$UI.lambda$new$0(Launcher.java:25)
at Launcher$UI$$Lambda$1/455659002.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:744)
at java.awt.EventQueue.access$400(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.awt.EventQueue$3.run(EventQueue.java:691)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:714)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

这是我读取的 .txt 文件:

1 - Toolkit

这是 println :

            ItemIdReader newF= new ItemIdReader();
System.out.println(newF.getId());

正如你所看到的,我已经将值 id 设置为整数,但是当我尝试输出它时,我仍然得到它说它是一个字符串,谢谢。

最佳答案

首先,如果没有这个异常,就会出现无限循环。

我的猜测是您的文件开头有一个隐藏字符,可能是 BOM。通过将每个字符转储为整数来确认,如果确认,则使用编辑器重新打开文件,并确保保存时不带 BOM。

for (char c : split[0].toCharArray()) {
System.out.println((int) c);
}

关于java - 不应该出现的奇怪的 NumberFormatException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23579589/

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