2017-10-18 4 views
0

j'ai une chaîne 9899100101103104105 je veux ajouter des numéros consécutifs soit 98 + 99 + 100 ... donc je suis en mesure de couper les chiffres de la chaîne et ajouter jusqu'à 100.But après je suis sûr comment écrire la logique. J'utilise la méthode String subString() et j'ai vu que (0,2), (2,4), (4,7), (7,10), (10,13), (13,16) devrait être je ne suis pas en mesure de proceeed, voici ma logiqueComment ajouter des numéros consécutifs dans une chaîne

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

    } 
    } 

la sous-chaîne début et la fin digits.After (4,7) en partie d'autre après (4,7) i je ne suis pas en mesure de procéder, s'il vous plaît aider

+2

Puis-je vous demander pourquoi vous faites cela? Est-ce une mission et vous devez le faire? Parce que sinon, je ne vois aucune raison de concaténer des nombres en une chaîne et ensuite essayer de diviser/analyser de nouveau ces nombres en entiers. –

+0

est-il possible de modifier l'entrée (c'est-à-dire de placer des caractères séparateurs dans la chaîne ou d'utiliser un tableau de nombres)? – Rhayene

+0

@Rhayene aucune entrée ne peut être modifiée – Mandrek

Répondre

1

Votre incrémentation basée sur la failed dernière valeur. Donc, garder votre logique:

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

Vous devez incremente par 3 lorsque le sum > 99. Faites cela dans le bloc de l'état

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

Mais honnêtement, votre logique ne sera pas facile à entretenir. Comment savez-vous que la première valeur n'est pas 9 et que vous ne devez ensuite utiliser que la sous-chaîne 1 en premier?

+0

@AxeIH merci pour la réponse rapide votre solution a travaillé pour moi – Mandrek