我正在研究背包问题,我是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)
感谢您的帮助。
答案 0 :(得分:0)
您正在使用字符串parseInt
调用18 7 4 6
方法。由于这不是有效的Integer,因此抛出NumberFormatException。
您已将输入拆分为String[] sar
。在for
循环中,您已在parseInt
中的每个值上调用sar
,这些值是有效的整数。好像你已经掌握了一切;只需删除int target = Integer.parseInt(input);
行。