Moin Leute. Ich sitze schon das ganze Wochenende an dieser Aufgabe aber komme einfach nicht weiter. Mittlerweile probiere ich einfach nur noch "blind" herum, was ziemlich frustrierend ist. Es geht um folgende Aufgabenstellung:

Die ersten beiden Methoden konnte ich noch problemlos implementieren, wenn auch etwas "unschön". Das was mir dabei aber so schwer fällt ist zu verstehen, was genau ich denn hier bei der Berechnung jetzt implementieren muss. Ich versuche die ganze Zeit einen Algorithmus zu finden, welcher sich für die Umrechnung aller Zahlensysteme allgemein anwenden lässt, also z.B mit einer Schleife die durch den gegebene String durch iteriert und mit variabler Basis und Potenz arbeitet um dann die neu errechnete Zahl auszugeben. Ist überhaupt möglich hier nur einen einzigen Algorithmus zu verwenden oder muss ich für jede einzelne Umrechnung also z.B Binaer in Dezi, Binaer in Hex, Dezi in Okta oder auch Okta in Binaer eine eigene Methode schreiben, welche ich dann final in convertValue aufrufe?? Aber was dabei für mich dagegen spricht wäre der Kommentar über der letzten Methode, welcher besagt, dass nur diese eine letzte Methode die Berechnung durchführt... Habt ihr eine Lösungsidee zu diesem Problem? Danke für euren Input!! Arrays und OOP sind noch nicht erlaubt!
Das ist mein Code bisher: (die letzte Methode war mein letzter Lösungsansatz, allerdings funktioniert diese nur bei der Berechnung von Binaer in Dezi....)

Die ersten beiden Methoden konnte ich noch problemlos implementieren, wenn auch etwas "unschön". Das was mir dabei aber so schwer fällt ist zu verstehen, was genau ich denn hier bei der Berechnung jetzt implementieren muss. Ich versuche die ganze Zeit einen Algorithmus zu finden, welcher sich für die Umrechnung aller Zahlensysteme allgemein anwenden lässt, also z.B mit einer Schleife die durch den gegebene String durch iteriert und mit variabler Basis und Potenz arbeitet um dann die neu errechnete Zahl auszugeben. Ist überhaupt möglich hier nur einen einzigen Algorithmus zu verwenden oder muss ich für jede einzelne Umrechnung also z.B Binaer in Dezi, Binaer in Hex, Dezi in Okta oder auch Okta in Binaer eine eigene Methode schreiben, welche ich dann final in convertValue aufrufe?? Aber was dabei für mich dagegen spricht wäre der Kommentar über der letzten Methode, welcher besagt, dass nur diese eine letzte Methode die Berechnung durchführt... Habt ihr eine Lösungsidee zu diesem Problem? Danke für euren Input!! Arrays und OOP sind noch nicht erlaubt!
Das ist mein Code bisher: (die letzte Methode war mein letzter Lösungsansatz, allerdings funktioniert diese nur bei der Berechnung von Binaer in Dezi....)
Java:
import java.util.Scanner;
import static java.lang.System.out;
public class Zahlensysteme {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
out.print("Zahl: ");
String str = scanner.next();
str = str.toLowerCase();
out.print("Von Zahlensystem (b/d/o/h): ");
char vonBasis = scanner.next().charAt(0);
out.print("Zu Zahlensystem (b/d/o/h): ");
char zuBasis = scanner.next().charAt(0);
scanner.close();
}
public static boolean checkValue(String str, int basis) {
boolean gueltig = true;
switch (basis) {
case 2: for(int i = 0; i < str.length(); i++) {
if (str.charAt(i) != '0' && str.charAt(i) != '1')
gueltig = false;
}
break;
case 10: for(int i = 0; i < str.length(); i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '9' )
gueltig = false;
}
break;
case 8: for(int i = 0; i < str.length(); i++) {
if (str.charAt(i) < '0' || str.charAt(i) > '7' )
gueltig = false;
}
break;
case 16: for(int i = 0; i < str.length(); i++) {
if ((str.charAt(i) < '0' || str.charAt(i) > '9') && (str.charAt(i) < 'a' || str.charAt(i) > 'f'))
gueltig = false;
}
break;
default: gueltig = false;
}
return gueltig;
}
public static int convertBasis(char basis) {
switch (basis) {
case 'b': return 2;
case 'o': return 8;
case 'h': return 16;
case 'd': return 10;
default: return -1;
}
}
public static String convertValue(String str, int vonBasis, int zuBasis) {
// ???
}
public static int binaerDezi(String str, int Basis) {
int newNumber = 0;
for(int n = 0, i = str.length()-1; i >= 0; i--, n++) {
newNumber += (Character.getNumericValue(str.charAt(i))) * Math.pow(Basis, n);
}
return newNumber;
}
}