Java Wertebereich eines Integers beschränken, möglich?

Status
Für weitere Antworten geschlossen.

violentviper

Lt. Commander
Registriert
Mai 2008
Beiträge
1.775
Hallo,
ich soll Aufgabenbedingt einen Integer einlesen und das Binäreergebnis daraus interpretieren. Den muss man dann von vorne nach hinten einzeln einlesen, z.B 1001 hat die letzte eins z.B die Wertigkeit 1, die nächste 2, etc. aber das kennt ihr ja :) .

Ich weiß leider nicht, wie ich den Wertebereich des Integers Beschränken kann, sodass man nur 1 oder 0 eingeben kann.
Meine Lösung funktioniert nur wenn man sich auch an die Eingabevorschrift ( 1,0) hält. Wenn man aber 2 oder eine andere Zahl eingibt, rechnet der genauso damit weiter, was natürlich nicht gewünscht ist.

Meine Idee war es, eine If Abfrage zu machen, das wenn größer eins, der Wert einfach auf 1 normiert wird. Das funktioniert auch, aber ich möchte im Eingabefeld garnicht erst die 2 eintragen können.


Code:
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.print("Geben sie die Zahl ein ");
		Scanner input = new Scanner(System.in); //Tastatureingabe
		
		int i = input.nextInt();
		int result= 0;

		
		int digit1 = ((i/1000) % 10);						// Digitabfrage	
		int digit2 = ((i/100) % 10);
		int digit3 = ((i/10) % 10);
		int digit4 = ((i/1) % 10);
		
	
		result=(digit4*1)+(digit3*2)+(digit2*4)+(digit1*8);
		System.out.println(result);
		
	}

}



PS: was macht eig das "%" in dem int digit3 = ((i/10) % 10); Befehl. Ohne das haut es nicht ganz hin, aber ich versteh nicht wofür man das braucht.
 
Den Input direkt einzuschränken geht nach meinem Wissen nicht. Hier wäre deine Idee den Wert nach dem Input zu "normieren" schon eine gute Lösung.

% ist der Modulo-Operator. Siehe wikipedia.
 
Du liest eine Zahl, also 0 bzw 1 nach der anderen ein. Falls der Nutzer etwas anderes als 0 oder 1 eingibt, löschst du dies kommentarlos in deinem Eingabepuffer und auf dem Bildschirm.
 
HominiLupus schrieb:
Du liest eine Zahl, also 0 bzw 1 nach der anderen ein. Falls der Nutzer etwas anderes als 0 oder 1 eingibt, löschst du dies kommentarlos in deinem Eingabepuffer und auf dem Bildschirm.

Und wie löscht man, eine eingegeben Zahl spurlos weg ? Ich möchte sie ja nicht Nullen sondern nicht ersichtlich löschen.
 
Ich kann kein Java, daher kann sein das ich Mist erzähle, aber ich würde einfach einen Bool nehmen. Der schluckt eh nur 1 oder 0.

Alternativ kannst du halt kontrollieren, ob da eine 0 oder 1 kommt und wenn nicht einfach sowas ausgeben wie "Falsche Eingabe, bitte erneut durchführen". Das ganze dann in einer while-Schleife solange, bis 0 oder 1 reinkommt.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben