当前正在编辑代码以创建跳过列表,我正在尝试读取一个文件,其中包含需要插入、搜索或删除的数据(分别由i、s、d表示)。
当试图运行它时,我被抛出数字格式异常,当它在catch语句中打印堆栈跟踪时,它看起来好像没有读取第一个字符,应该是“i”。
以下是我的主代码当前的样子,因为这似乎就是问题所在
public static void main(String[] args) {
Main list = new Main();
boolean result = false;
try {
BufferedReader br;
br = new BufferedReader(new FileReader("text.txt"));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append(System.lineSeparator());
line = br.readLine();
}
String everything = sb.toString();
String[] input = everything.split(",");
for (int i = 0; i < input.length; i++) {
String temp = input[i];
System.out.printf("%s", input[i]);
if (temp.startsWith("i")) {
result = list.insert(Integer.parseInt(temp.substring(2)));
} else if (temp.startsWith("s")) {
Node node = list.search(Integer.parseInt(temp.substring(2)));
if (node != null) {
System.out.println(temp.substring(2) + " found");
} else {
System.out.println(temp.substring(2) + " not found");
}
} else if (temp.startsWith("d")) {
result = list.delete(Integer.parseInt(temp.substring(2)));
if (result == true) {
System.out.println(temp.substring(2) + " deleted");
} else {
System.out.println(temp.substring(2) + " not deleted");
}
} else if (temp == "p") {
System.out.println("For the input file ");
System.out.println("With the RNG succeeded");
System.out.println("The current skip list is shown below");
list.printAll();
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是我的示例输入数据文本文件的样子
i 503
i 302
i 596
i 198
i 270
i 629
i 603
i 110
i 354
i 947
p
q
当它运行并吐回堆栈跟踪时,它会说
java.lang.NumberFormatException: For input string: "503
i 302
i 596
i 198
i 270
i 629
i 603
i 110
i 354
i 947
p
q
"
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.base/java.lang.Integer.parseInt(Integer.java:652)
at java.base/java.lang.Integer.parseInt(Integer.java:770)
at Main.main(Main.java:295)
所以我现在猜测,出于某种原因,当503肯定在文本数据文件中时,它没有读取503前面的“i”
问题是,您正在使用逗号分割数据,而您的数据根本没有逗号。所以当它达到温度时。子字符串(2),它实际使用以下字符串并尝试解析:
503
i 302
i 596
i 198
i 270
i 629
i 603
i 110
i 354
i 947
p
q
这是整个文件内容(不是数字)。
只需替换逗号(String[]input=everything.split(“,”)
)具有新行字符(
字符串[]输入=所有内容。拆分(“\n”)
),它应该可以工作。
我试图将字符串时间戳转换为整数时间戳,并使用postgres作为数据库。
您好,我正在尝试将excel表数据保存到MySQL数据库中。为此,我使用Apache Poi。我在Apache Poi中使用DataForcat获取单元格值。我成功地将单元格值作为字符串格式获取,但我试图将字符串值更改为Long我正在获取NumberFormatException。我正在尝试下面的代码。请尝试解决我的问题。 非常感谢。 这是控制台中的错误堆栈跟踪。
问题内容: 我正在尝试获得系统的运行平衡。为此,我从AMOUNT列获取jtable中所有数字的总和,然后将总和减去txtLoanAmount内部的值。这是我的代码段: 现在我收到错误消息: 我该如何解决呢?任何帮助将不胜感激。谢谢 问题答案: 由于Float.parseFloat()和Float.valueOf()始终将数字假定为您的本地格式,因此,这是一个简短的示例,如果您的语言环境与您获取的数
是来自用户的输入。 如何在不使用try catch的情况下解决此错误?