2017-10-18 147 views
0

我有一個字符串9899100101103104105我想添加連續的數字,即98 + 99 + 100 ...所以我能夠從字符串中刪減數字並加上100.但是在那之後我確信如何寫邏輯。我使用String subString()方法,我已經看到(0,2),(2,4),(4,7),(7,10),(10,13 ),(13,16),應該是子開始和結束digits.After(4,7)我不能夠proceeed,這裏是我的邏輯如何在一個字符串中添加連續的數字

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

    } 
    } 

中的其他部分之後(4,7)我我無法繼續,請幫助

+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

相關問題