2017-01-05 4 views
-2

warum die folgende Methode nicht zum Drucken von zweistelligen Zahlen, die kleiner oder gleich 56 und die Summe von sind Ziffern größer als 10 in JAVADrucken zweistellige Zahlen, die kleiner oder gleich 56 sind und die Summe der Ziffern größer als 10 JAVA

 for (int i = 10; i <= 99; i++) { 
     String str = Integer.toString(i); 
     int sum = (str.charAt(0) + str.charAt(1)); 
     if (sum > 10 && sum<=56) { 
      System.out.println("The first operation " + sum); 
      } 
     } 
+0

Weil Sie 'sum' anstelle von' i' drucken –

+1

Was erwarten Sie zu bekommen? Und was bekommst du? – hotzst

+1

Die dritte Zeile gibt die Summe der 'char'-Werte zurück, keine Ziffern. – PEF

Antwort

0

Die dritte Zeile: int sum = (str.charAt(0) + str.charAt(1)); ist eines der Probleme. Wenn i10 ist, wertet str.charAt(0) die den Charakter 1 die 49 ASCII- Wert hat und str.charAt(1) wertet auf den Charakter 0 die 48 ASCII-Wert hat eine Summe von 97 anstelle des gewünschten 1 erzeugen.

Stattdessen könnten Sie den Modulusoperator verwenden, um die Ziffern nach Bedarf abzuziehen. Zum Beispiel: int sum = (i/10) + (i % 10);.

* Auch der Bereich von i in Ihrer for Schleife sollte angepasst werden, wie andere Benutzer kommentiert haben.

+0

danke für die schnelle antwort, ich habe es geschafft, es herauszufinden –

0

Da Sie eine beliebige Anzahl von mehr als 56 nicht wissen, Ihren Kriterien passieren, müssen Sie Ihre Schleife ändern von 10 bis 56. So zu gehen, können Sie den zweiten Teil ausschließen der if-Anweisung. Ändern Sie die for-Schleife:

for (int i = 10; i <= 56; i++) { 

und Ihre if-Anweisung:

if (sum > 10) { 
+0

Dann würden wir die for-Schleife ändern, nicht die wenn Bedingung, nicht wahr? –

+2

Die Bedingung sollte auch geändert werden in 'if (sum> 10) {' und daher sollte die Bedingung in der for-Schleife "i <= 56" statt "i <= 99" sein – ZeusNet

+0

Ja, du hast Recht. Er macht den Check zweimal und es macht mehr Sinn, einfach von 10 auf 56 zu loopen. Ich habe meine Antwort aktualisiert. – Abdulgood89

Verwandte Themen