나는 배낭 문제를 해결하기 위해 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 가지 방법을 시도했지만 두 방법 모두 실패했습니다. 당신의 도움에 대한
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)
감사 : 여기
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);
}
여기에 코드입니다.
''String [] sar''에서''input''를 나눠 쓰고 있습니다 만, 그것을 사용하고 있지는 않습니다. 결국 파싱을 끝내고, 물론 "Integer"는 그러한 문자열을 공백으로 구문 분석 할 수 없습니다. –
@SchiduLuca이 문제를 해결할 방법이 있습니까? 문자열에서 정수로의 변환이 제대로 작동하지 않습니다. 그래서 공백으로 문자열을 구문 분석하지 않으면 해결할 수 있습니까? – user8581463