2014-10-20 3 views
-2

문제점은 사용자 입력이있는 문자열 내의 요소의 합계 값을 찾는 것입니다. 사용자가 입력 한 내용은 다음과 같아야합니다. 1,2,3,4,5,6,7 ...문자열의 요소에 대한 총 값 찾기

StringTokenizer을 사용하려고했을 때 문제가 발생하여 split() 메소드를 사용했지만 두 번째 for 루프에서 (i + i) 또는 (+ = i) 중 어느 것을 사용하는지에 따라 총 금액이 7 또는 28만큼 떨어져 있습니다. 당신이 그들을 필요로하고 같은 (AN int[] 사본으로 변환하지 않고) 한 루프에서 합계를 추가 할 때

// Libraries 
import java.util.Scanner; 
import java.util.StringTokenizer; 

public class Project_09_8 
{ 

    public static void main(String[] args) 
    { 

    // Create instance of Scanner class 
    Scanner kb = new Scanner(System.in); 

    // Variables 
    String input;      // Holds user input 
    String [] result;     // Holds input tokens in an array 
    int i = 0;       // Counter for loop control 

    // User input 
    System.out.print("Please enter a positive whole number, separated by commas: "); 
    input = kb.nextLine(); 
    result = input.split(","); 

    // Converts input String Array to Int Array 
    int [] numbers = new int [result.length];     

    // Loop through input to obtain each substring 
    for (String str: result) { 
     numbers[i] = Integer.parseInt(str); 
     i++; 
    } 

    // Receive this output when printing to console after above for loop [[email protected] 

    /* 
    // Loop to determine total of int array 
    int sum = 0;      // Loop control variable 
    for (int j : numbers) { 
     sum += i; 
     //sum = i + i;     
    } 

    // Print output to screen 
    System.out.println("\nThe total for the numbers you entered is: " + sum); 
    */ 

    } // End main method 

} // End class 
+0

'sum'에 대한 String에서 int로 변환/구문 분석을 할 수있다? 나는 당신의 프로그램이 중요한 오타를 가지고 있다고 생각한다. – ajb

+3

'sum + = j'을 원하지 않습니까? – Ben

+0

@ ajb - 정확합니다. 나는 그것을 보지 못했다고 믿을 수 없다. @ Ben - 예, 저는 sum + = j를 i 대신 사용하려고했습니다. 내가 그것을 바꿨 더라면, 그것은 올바르게 작동했다. – ml24

답변

0

난 당신이 \\s*,\\s*와 (선택 사항) 공백에 분할 제안,

public static void main(String[] args) { 
    // Create instance of Scanner class 
    Scanner kb = new Scanner(System.in); 
    System.out.print("Please enter a positive whole number, " 
     + "separated by commas: "); 
    String input = kb.nextLine(); 
    String[] result = input.split("\\s*,\\s*"); 
    int sum = 0; 
    for (String str : result) { 
     sum += Integer.parseInt(str); 
    } 
    System.out.println(Arrays.toString(result)); 
    System.out.printf("The sum is %d.%n", sum); 
} 
2

에서 변수를 선언 Java 8, 당신은 불행에서 자신을 넣을 수 있습니다

코드 :

0 1,238,

출력 :

28 
1

당신은 이미 당신을위한 쉼표에 분할하는 useDelimiter 방법을 사용할 수 있습니다 Scanner을 사용하고 있기 때문에.

스캐너도 nextInt() 당신이에 추가하는 어떤

Scanner s = new Scanner(System.in) 
        .useDelimiter("\\s*,\\s*"); 
    int sum = 0; 
    while(s.hasNextInt()){ 
     sum += s.nextInt(); 
    } 
    System.out.println(sum);