Ich versuchte, andere Fragen in der Nähe zu diesem zu überprüfen, konnte aber keine Antwort für meine herausfinden, deshalb senden Sie es als neuen Beitrag. Hoffe, das wird kein Problem verursachen.Java decToHex in rekursiv - falsche Reihenfolge der Ausgabe
Ich versuche, einen einfachen JAVA-Code für die Konvertierung von Zahlen zu schreiben - von Dezimal zu Oktal oder Hex. Mit octal ist alles in Ordnung, aber mit hex ist die Ausgabe in falscher Reihenfolge. wie wenn die Antwort 613 - Programm gibt aus 316.
Hier ist mein vollständiger Code:
import java.util.Scanner;
public class Cem {
public static void octalconverter(int a) {
if (a == 0) { //our base
System.out.println(); //I first put here return a, but then it was adding zeros to the end
} else {
System.out.print(a % 8);// first remainder = last digit, and so on
octalconverter(a/8); //recursively going till it is base
}
}
public static void hexconverter(int a) {
if (a == 0) {
System.out.println();
} else {
System.out.print(hexchart(a % 16));
hexconverter(a/16);
}
}
public static String hexchart(int a) {
String result = "";
if (a <= 9) {
result = a + result;
} else {
if (a == 10)
result = result + "A";
// System.out.print("A");
if (a == 11)
result = result + "B";
// System.out.print("B");
if (a == 12)
result = result + "C";
// System.out.print("C");
if (a == 13)
result = result + "D";
//System.out.print("D");
if (a == 14)
result = result + "E";
//System.out.print("E");
if (a == 15)
result = result + "F";
// System.out.print("F");
}
return result;
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Scanner oScan = new Scanner(System.in);
System.out.println("Please enter your decimal number : "); //getting input
int num = oScan.nextInt(); //assigning
System.out.println("Enter 1 for Octal Base Conversion #### Enter 2 for Hex Conversion");
int num2 = oScan.nextInt();
if (num2 == 1) {
System.out.print(num + " in Octal(base8) system is : ");
octalconverter(num); //conversion
} else if (num2 == 2) {
System.out.print(num + " in Hexadecimal(base16) system is : ");
hexconverter(num);
} else {
System.out.println("You entered a wrong choice for conversion type, please restart the program");
}
}
}
Können Sie mir bitte sagen, wo ich vermasselte. Ich muss auch sagen, dass ich nach dem Fehler suche, den ich hier gemacht habe, nicht nach einer anderen Möglichkeit, diesen Code zu schreiben. Danke denen, die bereit sind, einen anderen Weg zu teilen, aber wieder muss ich meinen Fehler hier lernen. Vielen Dank für Ihre Hilfe
Sowohl die Oktal- als auch die Hexadezimalkonverter sind falsch, da Sie "letzte" Ziffer * vor * rekursivem Aufruf drucken, um "frühere" Ziffern zu drucken. Verschieben Sie 'print()' nach dem rekursiven Aufruf. – Andreas
Ich lief Ihren Code und die Ausgabe war: '613 in Hexadezimal (Base16) System ist: 562'. – DimaSan
hey Andreas, :) danke fürs nochmal Aushelfen. Aber Octal gibt die richtige Ausgabe. auch du meinst für hexconverter den print() nach hexconverter (a/16) ?? –