当前位置: 首页 > 知识库问答 >
问题:

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

桓风史
2023-03-14

我正在研究背包问题,我是Java新手。我可以像这样手动添加数字:

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

但是,我无法允许用户输入数字
第一个数字应该是目标,然后是权重<因此,我尝试将用户输入作为字符串,并用空格将其拆分,然后将其转换为整数<接下来,我尝试用两种方法进行parseInt,但都没有成功
以下是代码:

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);
    }
    
    

以下是错误:

异常线程"main"java.lang.NumberFormatException:对于输入字符串:"18 7 4 6"在java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)在java.lang.nteger.parseInt(Integer.java:580)在java.lang.nteger.parseInt(Integer.java:615)在KnapSackWeights.main(KnapSackWeights.java:18)

谢谢你的帮助。

共有1个答案

穆单鹗
2023-03-14

您正在使用字符串调用parseInt方法。由于这不是有效的整数,因此引发NumberFormatException。

您已经将输入拆分为String[]sar。在for循环中,您已经对sar中的每个值调用了parseInt,它们是有效的整数。似乎您已经准备好了一切;只需删除int目标=Integer.parseInt(输入);行。

 类似资料: