Benim yapmam gereken böyleymis

Arkadasim yolladi sagolsun. Ama ilgilenen arkadaslarinda cok faydasi oldu. Allah razi olsun. Bu ödevlerin sürümü gelecektir. Yardimlarinizin devamini bekliyorum.
public class Zahldarstellung {
/*
* In dieser Methode wird kontrolliert, ob die Zahlendarstellungen
* überhaupt erst gültig sind. Dazu wird hier das "x < 1" verwendet,
* damit diese Methode, wenn diese 0 ist aufhört zu rechnen. Aber
* solange dies nicht der Fall ist wird kontrolliert, ob die Zahlen, die
* die Zahlendarstellung beinhaltet gültig sind, d.h. sie müssen kleiner
* gleich die Basis sein. Ist die Zahlendarstellung ungültig so wird die
* -1 gegeben.
* @param long x fuer Zahlendarstellung
* @param int b fuer Basis
* @return prueft, ob die Zahl gueltig ist oder nicht.
*/
public static long pruefe(long x, int b) {
return (x < 1) ? 0 : (x % 10) >= b ? -1 : pruefe(x / 10, b);
}
/*
* In dieser Methode wird die Zahlendarstellung in Dezimalzahlen umgerechnet.
* Dies geschieht wiederum indem vorerst kontrolliert wird, ob die Zahlen -
* darstellung < 1 ist, denn wenn dies der Fall ist kann man direkt die 0
* herausgeben. Ist die nicht der Fall, so wird hier der modulo 10 genommen,
* damit die letzte Zahl quasi "abgeschnitten" wird, um damit im naechsten
* Schritt rechnen zu können. Zusaetzlich wird im naechsten Schritt das "b"
* mit "b" weiter multipliziert.
* Also im 1. Durchgang werden die Zahlen nur zugewiesen, d.h es kommt immer
* der modulo 10 raus und erst im 2. Schritt kommt es zu einer Umrechnung.
* @param long x fuer Zahlendarstellung
* @param in b fuer Basis
* @return gibt die Zahlendarstellung in Dezimalzahl an
*/
public static long rechneUm(long x, int b) {
return (x < 1) ? 0 : (x % 10) + (rechneUm(x / 10, b) * b);
}
/*
* In dieser Methode wird die Dezimalzahl wieder in ihrer Ursprungs-
* zahlendarstellung umgerechnet. Zuerst wird kontrolliert, die Zahl
* wirklich gleich null ist. Erst wenn dies der Fall ist, endet das
* Rechnen. Ist die jedoch nicht der Fall, so werden im ersten
* Schritt alle Werte erstmal zu gewiesen. Dabei wird nur der modulo
* der Basis herausgegeben und erst im naechsten Schritt wird mit den
* Werten "gerechnet".
* @param long x fuer Zahlendarstellung
* @param int b fuer Basis
* @return die zuvor in Dezimalzahlen umgewandelte Zahlen werden
* wieder in Zahlendarstellungen zu den jeweiligen Basen gerechnet.
*/
public static long rechneZurueck(long x, int b) {
return (x == 0) ? 0 : (x % b) + (rechneZurueck (x / b, b) * 10);
}
/* In dieser Methode wird alles quasi zusammengefuegt. Hier wird als
* erstes ueberprueft, ob die Ergebnisse von "Pruefe" bereits -1
* (also false) ergeben haben. Ist dies nicht der Fall so werden die
* Ergenisse von "rechneUm" addiert und dies wiederum in die Funktion
* "rechneZurueck" eingesetzt. Hier kommt noch der "y" - Wert hinzu,
* das dann das "x" ersetzt, um den 2. Wert durch die ganzen Rechnungen
* zu fuehren.
* @param long x fuer Zahlendarstellung
* @param long y fuer 2. gegebene Zahlendarstellung
* @param int b fuer Basis
* @return addition der Dzimalzahlen und wieder umrechenen in die Zahlen-
* darstellungen, die die Zahlen vorher hatten.
*/
public static long addiere(long x,long y, int b) {
return pruefe(x, b) == - 1 || pruefe(y, b) == -1 ? -1
: rechneZurueck(rechneUm(x,b) + rechneUm(y,b),b);
}
/**
* Gibt Ergebnisse der Auswertung aus.
*/
public static void main(String[] args) {
System.out.println(addiere(1001, 11, 2));
System.out.println(addiere(11011, 1110, 2));
System.out.println(addiere(210, 11, 2));
System.out.println(addiere(773, 0, 8));
System.out.println(addiere(0, 107, 8));
System.out.println(addiere(773, 107, 8));
System.out.println(addiere(773, 1239, 8));
System.out.println(addiere(950, 192, 8));
System.out.println(addiere(9145, 882, 10));
System.out.println(addiere(11111111111L, 1, 2));
System.out.println(addiere(323, 133, 4));
}
}