线程“main”中的异常java.lang.NumberFormatException:对于输入字符串:

时间:2017-10-11 12:21:56

标签: java input knapsack-problem

我正在研究背包问题,我是Java的新手。我可以在main中手动添加数字:

SELECT item, COUNT(*) as num, COUNT(DISTINCT color) as num_colors
FROM transactions
GROUP BY item;

但是,我无法允许用户输入数字。
第一个数字应该是目标,然后是权重。
所以我尝试将用户输入作为字符串并用空格分割,然后将其转换为整数。
接下来,我尝试使用parseInt 2方式,但是我没有成功两种方式。
这是代码:

 // Fill the bag of weights. 
 //myWeights.bagOfWeights.add(18);
 //myWeights.bagOfWeights.add(2);
 //System.out.println("Possible answers: ");
 //myWeights.fillKnapSack(20);

这是错误:

  

线程“main”中的异常java.lang.NumberFormatException:用于输入   字符串:“18 7 4 6”at   java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Integer.parseInt(Integer.java:580)at   java.lang.Integer.parseInt(Integer.java:615)at   KnapSackWeights.main(KnapSackWeights.java:18)

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您正在使用字符串parseInt调用18 7 4 6方法。由于这不是有效的Integer,因此抛出NumberFormatException。

您已将输入拆分为String[] sar。在for循环中,您已在parseInt中的每个值上调用sar,这些值是有效的整数。好像你已经掌握了一切;只需删除int target = Integer.parseInt(input);行。