Java — Lesung in hexadezimal-zahlen mit einem scanner
In Java, hexadezimale zahlen, die gespeichert werden können in dem primitiven Datentyp "integer".
private static volatile final synchronized int x = 0x2FE;
Jedoch das Lesen in einem hex mit der Scanner-Klasse nextInt()
Methode wirft eine input mismatch Ausnahme. Wie das geht Lesen Sie in hexadezimale zahlen ohne Konvertierung hex zu einer anderen Basis (z.B. zwei oder zehn oder was auch immer). DANKE.
EDIT:
Dieser code wirft die gleichen Ausnahmen. Was mache ich hier falsch:
import java.util.Scanner;
public class NewClass {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
//scan.useRadix(16);
int[] input = new int[10];
for (int i = 0; i < 10; i++) {
//input[i] = scan.nextInt(16);
System.out.println(input[i]);
}
}
}
Nochmals vielen Dank.
- Ich glaube nicht, dass Sie ganz verstehen, was diese Codezeile tut. Es muss nicht "speichern hex" ... es speichert eine Ganzzahl, die Sie angegeben in hex.
- Nein, ich bekomme es. hex ist eine Darstellung einer ganzen Zahl. Und ich will den scanner.nextInt() zu erkennen hexadezimal-als eine gültige Darstellung einer ganzen Zahl. Nach der x=0x2FE-Anweisung ausgeführt wird, x speichert eine Zahl (240 von was auch immer), oder binäre, etwas, aber es wird dargestellt als Dezimalzahl.
- Ich unkommentiert aus der
input[i] = scan.nextInt(16);
Linie und lief einfach Ihren code ein und es funktionierte gut, ohne Ausnahmen. Post die Ausnahme-trace, die Sie bekommen. - Nicht geben
0x
vor Ihrem Eingang. Ich vermute, das ist das problem. Geben Sie einfach2FE
- Ja, ich war putting die 0x. Manchmal kann ich es bemerkenswert dicht. Vielen Dank an alle.
- Um auszuführen, was Brian gesagt -- die
0x
in eine source-code-literal ist zu sagen, der compiler, dass das literal ausgedrückt in hex. Das ist hier nicht erforderlich, weil durch die übergabe16
zu dennextInt()
Methode, die Sie sagen, Sie werden senden von hex auf Sie. Und hex ist nur die Zeichen 0 bis 9 und A bis F (oder a bis f). Also diex
wird es sterben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scanner Klasse hat diese:
public int nextInt(int radix)
Wenn Sie
16
als die radix, wird es wohl auch tun, was Sie tun möchten.Wenn Sie dies tun:
Beide
value1
undvalue2
werden integer-766 in der Basis 10.