Einführung
Die Methode compareUnsigned() der Klasse Integer wird verwendet, um den vorzeichenlosen Wert (unsigned value) von zwei Ganzzahlen zu vergleichen, um herauszufinden, welche von beiden größer ist. Die Methode gibt 0 zurück, wenn die vorzeichenlosen Werte beider Ganzzahlen gleich sind. Sie gibt 1 zurück, wenn der vorzeichenlose Wert der ersten Ganzzahl größer als der der zweiten ist. Sie gibt -1 zurück, wenn der vorzeichenlose Wert der ersten Ganzzahl kleiner als der der zweiten ist.
Erstellen Sie eine Java-Klassen-Datei
Im Terminal erstellen Sie ein neues Verzeichnis für Ihr Java-Projekt. Beispielsweise:
mkdir project
Wechseln Sie in das Projektverzeichnis:
cd project
Erstellen Sie eine neue Java-Klassen-Datei mit dem Namen IntegerCompareUnsigned.java:
touch IntegerCompareUnsigned.java
Implementieren Sie den Code
Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei IntegerCompareUnsigned.java ein:
import java.lang.Integer;
import java.util.Scanner;
public class IntegerCompareUnsigned {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Enter first and second number: ");
// Eingabe vom Benutzer entgegennehmen
try {
int n1 = sc.nextInt();
int n2 = sc.nextInt();
// Aufruf der Methode compareUnsigned()
int r = Integer.compareUnsigned(n1, n2);
// Ergebnis prüfen
if(r > 0) {
System.out.println("First number is greater");
}
else if(r < 0) {
System.out.println("Second number is greater");
}
else {
System.out.println("Both numbers are equal");
}
}
catch(Exception e) {
System.out.println("Invalid input!");
}
}
}
Speichern Sie die Datei und verlassen Sie den Editor.
Dieses Programm nimmt zwei Ganzzahlen vom Benutzer entgegen und verwendet die Methode compareUnsigned(), um ihre vorzeichenlosen Werte (unsigned values) zu vergleichen. Anschließend wird angezeigt, ob die erste Zahl größer als die zweite ist, die zweite Zahl größer als die erste ist oder ob die Zahlen gleich sind.
Kompilieren und ausführen Sie das Programm
Kompilieren Sie das Programm mit dem folgenden Befehl:
javac IntegerCompareUnsigned.java
Führen Sie das Programm mit dem folgenden Befehl aus:
java IntegerCompareUnsigned
Sie sollten die folgende Eingabeaufforderung sehen:
Enter first and second number:
Geben Sie zwei Zahlen ein - eine größer als 2147483647 und die andere kleiner oder gleich 2147483647. Dies liegt daran, dass der Java-int-Datentyp nur vorzeichenbehaftete 32-Bit-Werte (signed 32-bit values) aufnehmen kann - von -2147483648 bis 2147483647. Wenn Sie eine Zahl größer als 2147483647 eingeben, wird eine Fehlermeldung angezeigt.
Das Programm wird ausgeführt, und Sie sollten die folgende Ausgabe sehen:
First number is greater
Testen Sie das Programm mit verschiedenen Werten
Sie können das Programm mit verschiedenen Werten testen und die Ausgabe betrachten.
Versuchen Sie, das Programm mit den folgenden Eingaben auszuführen:
Enter first and second number: -10 20
Enter first and second number: 500000000 -200000000
Enter first and second number: 0 0
Modifizieren Sie das Programm
Ändern Sie das Programm so, dass es zwei Ganzzahlen als Befehlszeilenargumente nimmt, anstatt sie zur Laufzeit vom Benutzer einzulesen.
Kopieren Sie den folgenden Code und fügen Sie ihn in die Datei IntegerCompareUnsigned.java ein:
import java.lang.Integer;
public class IntegerCompareUnsigned {
public static void main(String[] args) {
// Überprüfen, ob die richtige Anzahl von Argumenten angegeben wurde
if(args.length!= 2) {
System.out.println("Please provide two integer arguments!");
return;
}
// Die Argumente als Ganzzahlen analysieren
int n1 = Integer.parseInt(args[0]);
int n2 = Integer.parseInt(args[1]);
// Die Methode compareUnsigned() aufrufen
int r = Integer.compareUnsigned(n1, n2);
// Das Ergebnis prüfen
if(r > 0) {
System.out.println(n1 + " is greater than " + n2);
}
else if(r < 0) {
System.out.println(n2 + " is greater than " + n1);
}
else {
System.out.println(n1 + " and " + n2 + " are equal");
}
}
}
Speichern Sie die Datei und verlassen Sie den Editor.
Kompilieren und starten Sie das modifizierte Programm
Kompilieren Sie das geänderte Programm mit dem folgenden Befehl:
javac IntegerCompareUnsigned.java
Führen Sie das geänderte Programm mit dem folgenden Befehl aus:
java IntegerCompareUnsigned 3000000000 200000000
Sie sollten die folgende Ausgabe sehen:
3000000000 is greater than 200000000
Ändern Sie das Programm, um es mit verschiedenen Eingaben zu testen.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie die Methode compareUnsigned() der Integer-Klasse verwenden, um den vorzeichenlosen Wert (unsigned value) zweier Ganzzahlen zu vergleichen und herauszufinden, welche von beiden größer ist. Sie haben auch gelernt, wie Sie das Programm so ändern können, dass es zwei Ganzzahlen als Befehlszeilenargumente nimmt, anstatt sie zur Laufzeit vom Benutzer einzulesen.



