Simple Java aufgabe code klappt nicht siehe Foto?
Aufgabe: Schreiben Sie ein Programm, welches int a und int b einliest und Letzte Ziffer gleich ausgibt, wenn die letzten Ziffern von a und b gleich sind. Tipp: Die letzte Ziffer ist der Rest bei der Division durch 10!
):
Mit freundlichen Grüßen
7 Antworten
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
- warum gibst du einen int mit dem Wert 0 zurück und nicht einfach einen boolean oder void?
- warum teilst du b durch 12 und nicht auch durch 10?
- du brauchst modulo, nicht die division.
![](https://images.gutefrage.net/media/default/user/7_nmmslarge.png?v=1438863662000)
Warum sollte das nicht klappen?
Dass a geteilt duch 10 mal irgendwann das gleiche ist, wie b geteilt durch 12 ist eben sehr selten und nicht das, was gewünscht war.
Würde es stattdessen mal mit Modulo (%) versuchen....
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Du mußt
if ((a % 10) == (b % 10)) {
nehmen!
'%' ist der Modulo-Operator, welcher Dir den Rest einer Ganzzahldivision ausgibt.
P.S.: Ich bin von Beruf Software-Entwickler...
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Dass du b nicht durch 10 teilst, hast du selbst schon gemerkt.
Ich weiß nicht mehr, in welcher Programmiersprache das war, aber in einer musst man sich des Tricks behelfen, ein .0 hinter Ganzzahlen bei der Division zu setzen, weil sonst eine Integerdivision durchgeführt wird, welche den Nachkommastellenanteil der Division nicht berücksichtigt.
Probier also mal
if(a/10.0 == b/10.0)
![](https://images.gutefrage.net/media/default/user/9_nmmslarge.png?v=1551279448000)
Es ist immer ein Problem, zwei double's auf Gleichheit zu überprüfen.
Bei der Eingabe von sehr verschieden großen Zahlen wird das nicht immer richtig sein.
![](https://images.gutefrage.net/media/user/Suboptimierer/1443606504450_nmmslarge__0_0_160_160_7f828fad18ee7edb96b8daceedaeeadb.png?v=1443606506000)
Das stimmt. Man muss dann mit Epsilon-Umgebungen arbeiten.
![](https://images.gutefrage.net/media/user/shanhujumalapa/1568385911008_nmmslarge__260_0_1800_1800_46648603eca13a8359bc2964121c5d3c.jpg?v=1568385911000)
public int aufgabe2(int a, int b)
{
if((a % 10) == (b % 10))
{
System.out.println("Letze Ziffer ist gleich!");
}
return 0;
}
probier mal das... das % liefert den Rest zurück, das ist in dem Fall die letzte Stelle.
![](https://images.gutefrage.net/media/user/xxxcyberxxx/1691185806883_nmmslarge__0_0_1230_1230_4dfa4fbf5df5051b1dd22ccc1781adca.png?v=1691185807000)
nein, nicht ganz. der Trick ist, den Modulo zu nutzen, um den REST DER DIVISION zu bekommen
![](https://images.gutefrage.net/media/default/user/15_nmmslarge.png?v=1551279448000)
Um die letzte Ziffer zu ermitteln, muß man den Modulo-Operator "%" benutzen
Woher ich das weiß? Ausbildung: Diplom-Informatiker, Beruf: Software-Entwickler mit 25jähriger Erfahrung
![](https://images.gutefrage.net/media/user/Graviton420/1572417071937_nmmslarge__0_13_220_219_0cf4952393719b91bb52b10f3254c8b9.jpg?v=1572417072000)
Setz mal das a/10 und b/10 in Klammern, also (a/10)==(b/10)
Außerdem musst du die Reste betrachten, also % (Modulo Teilen) statt / verwenden
Ergänzung: Ich sehe gerade, dass der Rest verglichen werden soll. Entweder du nutzt den Modulooperator oder du machst es so:
Das heißt, du kannst dir zunutze machen, dass bei einer Integerdivision die Nachkommastellen abgeschnitten werden, um die Restfunktion zu simulieren.
Wenn der Wert hinter dem Komma gleich ist, ist bei der Ausgangszahl die letzte Ziffer gleich.