2017-10-18 2 views
0

문자열이 있습니다. 9899100101103104105 연속적인 숫자 즉, 98 + 99 + 100을 추가하고 싶습니다. 그래서 문자열에서 숫자를 잘라서 최대 100 개까지 추가 할 수 있습니다. 나는 논리를 쓰는 방법을 확신합니다. String subString() 메서드를 사용하고 있는데 (0,2), (2,4), (4,7), (7,10), (10,13)), (13, 16)는 문자열 내가 proceeed 할 수없는 오전) (4,7를 시작하고 digits.After을 종료해야합니다, 여기에 내가) (4,7 후 다른 부분에서 내 논리문자열에 연속 숫자를 추가하는 방법

public class MissingNumberInString { 

public static void main(String[] args) { 

    String numbr = "9899100101103104105"; 
    firstTwo(numbr); 
} 

public static void firstTwo(String str) { 

    int sum =0; 
    int num = 0; 
    for(int i=0;i<str.length()-1;i=i+2){ 

     if(sum <=99){ 
     sum += Integer.parseInt(str.substring(i, i+2)); 
     }else{ 

     sum += Integer.parseInt(str.substring(i, i+3)); 
     } 
     System.out.println(sum); 
    } 

    } 
    } 

입니다 진행할 수 없습니다. 도와주세요

+2

내가 왜이 작업을 수행하는지 묻습니다. 이 임무이며 당신은 그것을해야합니까? 왜냐하면 그렇지 않은 이유는 숫자를 문자열에 연결 한 다음 해당 숫자를 정수로 다시 분할/분석하려고하는 이유가 없기 때문입니다. –

+0

입력을 변경하는 것이 가능합니다 (예 : 구분 문자를 문자열에 삽입하거나 숫자 배열 사용). – Rhayene

+0

@Rhayene 입력을 변경할 수 없습니다 – Mandrek

답변

1

마지막 값을 기준으로 증분에 실패했습니다. 그래서 당신의 논리를 유지 :

for(int i=0;i<str.length()-1;i=i+2){ 
    if(sum <=99){ 
    sum += Integer.parseInt(str.substring(i, i+2)); 
    }else{ 

    sum += Integer.parseInt(str.substring(i, i+3)); 
    } 
    System.out.println(sum); 
} 

당신은 3 sum > 99에 의해 incremente한다. 조건 블록

for(int i=0;i<str.length()-1; /* removed incrementation */){ 
    if(sum <=99){ 
     sum += Integer.parseInt(str.substring(i, i+2)); 
     i=i+2; 
    }else{ 
     sum += Integer.parseInt(str.substring(i, i+3)); 
     i=i+3; 
    } 
    System.out.println(sum); 
} 

그러나 정직에, 당신의 논리를 유지하기 쉽지 않을 것이다 않는다. 첫 번째 값이 9이 아니라는 것을 어떻게 알 수 있습니까? 그리고 나서 1 문자 만 먼저 사용해야합니까?

+0

@AxeIH 귀하의 솔루션이 저에게 효과적이었습니다 – Mandrek

관련 문제