Simple Java aufgabe code klappt nicht siehe Foto?

7 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
  1. warum gibst du einen int mit dem Wert 0 zurück und nicht einfach einen boolean oder void?
  2. warum teilst du b durch 12 und nicht auch durch 10?
  3. du brauchst modulo, nicht die division.

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....

Woher ich das weiß:eigene Erfahrung – Ich habe selber lange im PC gearbeitet

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...

Woher ich das weiß:Berufserfahrung

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)
Woher ich das weiß:Berufserfahrung – Programmierer

Suboptimierer  31.10.2019, 13:31

Ergänzung: Ich sehe gerade, dass der Rest verglichen werden soll. Entweder du nutzt den Modulooperator oder du machst es so:

if(a/10.0-a/10 == b/10.0-b/10)

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.

1
gogogo  31.10.2019, 14:42
@Suboptimierer

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.

1
shanhujumalapa  31.10.2019, 13:27

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.

3
xxxcyberxxx  31.10.2019, 13:25

nein, nicht ganz. der Trick ist, den Modulo zu nutzen, um den REST DER DIVISION zu bekommen

5
Waldi2007  31.10.2019, 13:25

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

7

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