线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:
我正在研究背包问题,我是Java新手。我可以手动添加这样的数字:线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:
// Fill the bag of weights.
//myWeights.bagOfWeights.add(18);
//myWeights.bagOfWeights.add(2);
//System.out.println("Possible answers: ");
//myWeights.fillKnapSack(20);
但是,我不能让用户输入数字。
第一个数字应该是权重之后的目标。
所以我试图把用户输入作为一个字符串,并用空格分开,然后将其转换为整数。
接下来,我试图做parseInt 2种方式,但我都没有成功。
下面是代码:
import java.util.*;
public class KnapSackWeights{
private Sack bagOfWeights = new Sack();
private Sack knapSack = new Sack();
public static void main(String[] args){
KnapSackWeights myWeights = new KnapSackWeights();
Scanner in = new Scanner(System.in);
System.out.println("Enter the input:");
String input = in.nextLine();
String[] sar = input.split(" ");
//System.out.println(inp);
int target = Integer.parseInt(input);
System.out.println(target);
int[] weights_array = new int[26];
int n = input.length()-1;
for(int i=1; i<=n; i++)
{
weights_array[i - 1] = Integer.parseInt(sar[i]);
}
int k = weights_array[0];
myWeights.bagOfWeights.add(target);
//System.out.println(target);
System.out.println("Possible answers: ");
myWeights.fillKnapSack(k);
//myWeights.fillKnapSack(Integer.parseInt(sar[0]));
// Fill the bag of weights.
//myWeights.bagOfWeights.add(11);
//myWeights.bagOfWeights.add(8);
//myWeights.bagOfWeights.add(7);
//myWeights.bagOfWeights.add(6);
//myWeights.bagOfWeights.add(5);
//myWeights.bagOfWeights.add(4);
//System.out.println("Possible answers: ");
//myWeights.fillKnapSack(20);
}
以下是错误:
Exception in thread "main" java.lang.NumberFormatException: For input string: "18 7 4 6" 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 KnapSackWeights.main(KnapSackWeights.java:18)
感谢您的帮助。
您正在使用字符串18 7 4 6
调用parseInt
方法。由于这不是有效的整数,因此抛出NumberFormatException。
您已将输入拆分为String[] sar
。在for
循环中,您已在sar
的每个值上调用parseInt
,它们是有效的整数。似乎你拥有一切;只需删除int target = Integer.parseInt(input);
一行。
如果我删除目标,我可以添加到myWeights.bagOfWeights.add(target);为它添加内容? – user8581463
@ user8581463这取决于;你想在那里放什么?现在'.add(target);'由于例外而没有达到,如果达到了,它不会对你有任何好处,因为'target' _不是有效的int。我假设你想放在那里的int在'sar'数组中,所以你从那里得到它。 –
插入sar数组也会给我一个错误:ArrayIndexOutOfBoundsException:4对于weight_array [i - 1] = Integer.parseInt(sar [i])行; – user8581463
你在''String [] sar''中分割''input'',但你甚至没有使用它。你最终解析这行,当然''Integer''不能用空格解析这样的字符串。 –
@SchiduLuca有没有办法解决这个问题?从String到整数的转换不能正常工作。所以如果我不用空格解析字符串,那应该解决它? – user8581463