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