2017-05-08 7 views
0

Je dois additionner tous les chiffres d'une chaîne donnée. Donc, j'ai ceComptage des chiffres dans une chaîne donnée

public static void main(String[] args) { 

    Scanner odczyt = new Scanner(System.in); 
    System.out.println("Input string"); 
    String ciag = odczyt.nextLine(); 

    int suma = 0; 

    for (int i = 0; i < ciag.length(); i++) { 
     if (Character.isDigit(ciag.charAt(i))) { 
      suma += ciag.charAt(i); 
     } 
    } 
    System.out.println(suma); 
} 

Quand je entrée:

"Ala a 3 pommes et 1 orange"

la sortie est de 100 au lieu de 4. Que dois-je changer pour le faire compter seulement les chiffres?

+0

Si c'était "Ala a 13 pommes et 1 orange", auriez-vous besoin de 14 ou 5? En d'autres termes, devrait-il encore traiter les chiffres individuellement? –

+0

Oui, chaque chiffre devrait être ajouté par lui-même. –

Répondre

5

Le problème se produit ici:

suma += ciag.charAt(i); 

vous ajoutez le code de caractère plutôt que le chiffre lui-même.

changement à ceci:

suma += Integer.parseInt(ciag.charAt(i)+""); 
1

C'est parce que vous ajoutez le code ascii des numéros. Il suffit de soustraire '0' du numéro de caractère comme indiqué ci-dessous:

suma + = ciag.charAt (i) - '0';

+0

L'idée est bonne. Encore mieux d'utiliser 'Character.getNumericValue (ciag.charAt (i))'. –