Methoden Ausgabe true wenn nur Ziffern <= 1 vorhanden

Waffeleisen

Mitglied
Hey,

ich versuche momentan in Java, eine Methode zu schreiben, die true ausgeben soll, wenn
keine der Ziffern einer Zahl größer als 1 ist.
Ich bekomme es jedoch nur hin eine Methode zu schreiben, die mir sagt ob die Ziffer in einer Zahl vorhanden ist oder nicht.
Kann mir bitte jemand helfen? Eigentlich dürfte das doch nicht so schwierig sein.
Das ganze soll mit einem bedingten Ausdruck und Rekusion gemacht werden.

Java:
        public static boolean enthaeltBinaer(long zahl) {
     
        return zahl % 10 <= 1
                ? true
                : zahl < 10 
                    ? false
                    : enthaeltBinaer(zahl / 10);
 
Hi,

solchen Syntax habe ich noch nie gesehen.
Schau dir mal die Thematik der Schleifen und if-Statements für JAVA an.

ansonsten würde es in etwa so aussehen können:

Java:
public boolean enthaeltBinaer(long zahl){
		boolean klEins = false;
		if (zahl % 10 <= 1){
			klEins = true;
		}		
		return klEins;
	}
 
So würde es gehen:

Java:
public static boolean enthaeltBinaer(long zahl) {
{
  boolean istBinaer=true;
   String zahlstring=String.valueOf(zahl);
   for(int i=0; i<zahlstring.length(); i++)
{
   if(Integer.parseInt(zahlstring.substring(i, i+1))>1)
{
    istBinaer=false;
break;
}
}   

return istBinaer;
}
 
Naja, "a == b ? x :y" statt "if (a == b) then x else y" ist ja schon valide Syntax. Vielleicht zweimal verschachtelt für einen Anfänger wirklich ein wenig wild...

Zu BuckRogers und BRoll:
Eure Lösungen sind beide nicht rekursiv 😉

Zu Waffeleisen:

Verstehe ich das richtig: Long soll eine beliebiger Long wert sein und es oll true rauskommen wenn der Wert zum Beispiel 1010010101 ist und false wenn 1012012?

Muss "zahl" eine feste Länge haben, z.B. immer 10 Stellen? oder wäre auch 1 erlaubt?
 
Naja, "a == b ? x :y" statt "if (a == b) then x else y" ist ja schon valide Syntax. Vielleicht zweimal verschachtelt für einen Anfänger wirklich ein wenig wild...

Zu BuckRogers und BRoll:
Eure Lösungen sind beide nicht rekursiv 😉

Zu Waffeleisen:

Verstehe ich das richtig: Long soll eine beliebiger Long wert sein und es oll true rauskommen wenn der Wert zum Beispiel 1010010101 ist und false wenn 1012012?

Muss "zahl" eine feste Länge haben, z.B. immer 10 Stellen? oder wäre auch 1 erlaubt?

Ich danke euch allen erstmal^^

Ganz genau das meine ich! Die Länge von "zahl" ist beliebig.

MfG
 
Java:
public static boolean enthaeltBinaer(long zahl) {
	if(zahl%10 > 1) return false;
	if(zahl > 9) return enthaeltBinaer(zahl/10);
	return true;
}
ungetestet...
 
Da die fertige Lösung eh schon gepostet wurde hier noch mit ternären Operator weil er so schön ist:

Java:
public static boolean enthaeltBinaer(long zahl) {
	return zahl % 10 <= 1 ? 
		 zahl / 10 == 0 ? 
				 true : enthaeltBinaer(zahl / 10) : false;

	}

😉
 
Ich kenne diese Schreibweise garnicht. Möchte das gern lernen. WO kann ich da nachlesen bzw. was wäre mein Suchbegriff?

Danke 😉
 

Zurück
Oben