2014-11-03 5 views
0

이 프로그램에서는 입력을 공백으로 구분 한 이름 다음에 다음 형식의 문자열로 사용합니다. 이 시리즈에는 하나 이상의 정수가있을 수 있습니다. 출력은 시리즈의 이름과 그 합이됩니다. 여기에 출력을해야 무엇의 예입니다 : 내가 꽤 이동 한자바 프로그램 : 사용자로부터 정수 추가하기 문자열 입력

int number = Integer.parseInt(series.substring(start, space)); 

: 내 코드에 문제가 있어요

Series? seriesname 1 3 5 7 11 
sum(seriesname) = 27 

는, 그것은이 라인 (제외)에 문제가 계속 조금 주위에 있지만 이것은 내가 지금 가지고있는 것입니다 :

import java.util.Scanner; 

public class NamePlusAddingInts { 
    public static String series; 
    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Series? "); 

     series = scan.nextLine(); 
     String name = series.substring(0, series.indexOf(' ')); 

     System.out.print("Sum(" + name + ") = " + number); 
    } 
    public static int adding() { 
     int space = series.indexOf(' '); 

     while (space != -1) { 
      int start = space + 1; 
      int number = Integer.parseInt(series.substring(start, space)); 

      number = number + number; 
      space++; 
     } 
     return number; 
    } 
} 
+4

'코드에 문제가 있습니다. 문제가 계속 발생합니다. '- 문제점은 무엇입니까? – August

+0

왜 코드가 작동하지 않습니까? 오류/예외는 무엇입니까? –

+0

'substring '에 대한 매개 변수는 시작 문자와 끝 문자 (더하기 1)입니다. 당신은 시작이 항상 * 끝 문자 뒤에 * 있도록 그 물건들이 준비되어 있습니다. 그건 안돼. – ajb

답변

1

당신은 그것을 생각하지 못했습니다. 당신은 관심, 당신은 단지 공간에서 문자열을 분할 이름으로 첫 번째 요소를 가지고 코드를 훨씬 명확하게 만들 수있는 것들 사이의 명확한 구분을 가지고,이 사항을 고려하십시오

String numbers = "name 5 20 26 4 2 13"; 
    String[] splitNumbers = numbers.split(" "); 

    int sum =0; 
    String name = splitNumbers[0] 

    for(int i = 1; i < splitNumbers.length ; i++){ 
     sum += Integer.parseInt(splitNumbers[i]); 
    } 

지금 바로 변경 하드 코딩 된 숫자를 값을 사용자 입력 및 그 완료. 사용자가 숫자가 아닌 다른 것을 입력하는 것을 두려워하는 경우 형식 예외를 확인하기 위해 try-catch로 둘러 쌀 수 있습니다.

+0

sum + = splitNumbers [i]; 이것은 연결 문자열만을 제공합니다. 귀하의 숫자를 int로 구문 분석 한 다음 합계를 수행하십시오 –

+0

그래, 어떻게 든 편집했을 때 그 비트가 제거되었습니다. 감사합니다 :) – FruitAddict

0

Adding() 메서드를 더 잘 구현하면 긴 문자열을 문자열 배열로 분리 할 수 ​​있습니다. String 메서드 split(" ")을 호출하여 문자열을 문자열 배열로 변환 할 수 있습니다.

public static int adding(String input) { 
    int sum = 0; 
    String[] array = input.split(" "); 

    //starts from 1 because array[0] is the name of the series 
    for (int i = 1; i < array.length; i++) { 
     sum += Integer.parseInt(array[i]); 
    } 
    return sum; 
} 

희망이 있습니다.

+0

sum + = array [i]; 이것은 연결 문자열만을 제공합니다. 당신은 귀하의 숫자를 int로 구문 분석 한 다음 합계 –

+0

실수로 그 하하를 떠났다. 고마워 btw! – jials

관련 문제