Java feststellen ob mehrstellige Zahl aus den gleichen Zahlen besteht?
Hallo zusammen,
Ich habe mal wieder eine Aufgabe an der ich mir die Zähne ausbeiße.
Aufgabe :
// liefert zurueck, ob i eine "Schnapszahl" ist, also mehr als eine Stelle hat
// und aus lauter gleichen Ziffern besteht
// Sie duerfen davon ausgehen, dass i >= 0 ist.
// Beispiele:
// ----------
// 11, 99, 222, 3333, 444444444 sind "Schnapszahlen"
// 0, 1 und 8 sind KEINE "Schnapszahlen"
int z = 11;
if (i <= 10) {
return false;
} else {
if (i > 10 & i % z == 0) {
//for-Schleife?
return true;
} else {
return false;
}
}
}
Also mein Ansatz wäre das man z.B 112=22 bis 9 durchmachen kann danach müsste die Zahl 11 um eine Zahl ergänzt werden also 111,1111 usw. nur ich habe schon einiges durchprobiert bekomme aber nur bis 99 den Wert true raus.
Vielen dank schon mal im Voraus!
4 Antworten
Und hier ein koservativer Ansatz über den Weg mit Strings. :)
public static boolean isLiquorNumber(int value)
{
if(number < 10)
return false;
String number = Integer.toString(value);
String firstDigit = number.substring(0, 1);
boolean result = true;
for(int i = 1; i < number.length; i++)
{
if(!number.substring(i, 1).equals(firstDigit))
{
result = false;
break;
}
}
return result;
}
Wenn es nicht zwingend auf Ausführungsgeschwindigkeit ankommt (da ist der Lösungsweg mit Integern und Modulo besser), dann bevorzuge ich solche Algorithmen, da diese näher am menschlichen Denken liegen.
Deinen Ansatz habe ich nicht verstanden, aber überprüfen, ob alle Ziffern einer Zahl gleich sind, kannst du z.B. so
public static boolean gleicheZiffern(int zahl) {
if(zahl <= 10) return false;
int ziffer = zahl % 10;
zahl /= 10;
while(zahl > 0) {
if(zahl % 10 != ziffer) return false;
zahl /= 10;
}
return true;
}
Sry, hatte die Aufgabenstellung nicht mit kopiert.
// liefert zurueck, ob i eine "Schnapszahl" ist, also mehr als eine Stelle hat
// und aus lauter gleichen Ziffern besteht
// Sie duerfen davon ausgehen, dass i >= 0 ist.
// Beispiele:
// ----------
// 11, 99, 222, 3333, 444444444 sind "Schnapszahlen"
// 0, 1 und 8 sind KEINE "Schnapszahlen"
Schreib doch mal die Aufgabenstellung genau hin.
Java feststellen ob mehrstellige Zahl aus den gleichen Zahlen besteht?
zunächst: das Wort "Zahlen" soll wohl "Ziffern" bedeuten.
Dann: das kann bedeuten: schauen, ob mindestens 2 Ziffern gleich sind oder: schauen ob alle Ziffern gleich sind.