gpt4 book ai didi

java - 将 String 解析为 Int 时出现 NumberFormatException

转载 作者:行者123 更新时间:2023-11-30 09:04:37 26 4
gpt4 key购买 nike

我正在编写代码来获取用户输入的多项式的系数和指数。例如,我在控制台中输入“-3x^4+2x^3+1x^2-1x^1+8x^0”。我不断收到此错误:

Exception in thread "main" 

java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:470)
at java.lang.Integer.parseInt(Integer.java:499)
at polynomials.Driver.main(Driver.java:31)

但是,当我输入一个没有任何负数的多项式时(例如:“3x^4+2x^3+1x^2+1x^1+8x^0”),没有错误。我相信错误不知何故来自 Integer.parseInt(str2),但它不应该能够解析负整数吗?这对我来说毫无意义,而且我在其他任何地方都找不到任何东西......任何帮助都会有很大的帮助。谢谢大家!

public static void main(String[] args) {

Scanner userInput = new Scanner(System.in);
System.out.println("Enter a polynomial: ");

String polynomial = userInput.nextLine();

String newPoly = polynomial.replace("-", "+-").trim();

String[] arr = newPoly.split("\\+");

for (int i = 0; i<arr.length; i++) {
System.out.println(arr[i]);

String str = arr[i].trim();
String[] arr2 = str.split("x");

String str2 = arr2[0];

System.out.println(str2); //prints coefficient
System.out.println(str.substring(str.indexOf('^')+1)); //prints exponent
System.out.println(Integer.parseInt(str2));
}
}

最佳答案

此处您输入的字符串是 -3x^4+2x^3+1x^2-1x^1+8x^0 ,它将被转换为 +-3x^4+2x ^3+1x^2-1x^1+8x^0 在下一行之后。

String newPoly = polynomial.replace("-", "+-").trim();

因此,当您尝试使用 + 作为分隔符拆分它时,第一个值将生成为导致异常的 ""输入字符串。

在for循环中加一个if条件就可以了

for (int i = 0; i<arr.length; i++) {
if(arr[i].length()>0){
System.out.println(arr[i]);

String str = arr[i].trim();
String[] arr2 = str.split("x");

String str2 = arr2[0];

System.out.println(str2); //prints coefficient
System.out.println(str.substring(str.indexOf('^')+1)); //prints exponent
System.out.println(Integer.parseInt(str2));
}
}

关于java - 将 String 解析为 Int 时出现 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155741/

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