Hallo und erstmal vielen Dank für die Hilfe.. da smit dem Substring hätte ich ja eigentlich wirklich mal nachsehen können, doch raucht mir echt der Kopf. Ich brauche diese Aufgabe unbedingt bis morgen früh für eine Prüfung und ich verzweifle eben langsam. (Nein, ich werde icht Informatiker, wie man unschwer sieht. Aber leider gibt es auch für Maschbauer nunmal einen gewissen Informatik Pflichtteil)
Also ich komme echt nicht mehr weiter... Das Programm läuft nun, ABER es macht immernoch nicht das verlante! (Ein Binärwert soll in eine Oktalzahl umgewandelt und wieder ausgegeben werden) Vielleicht ist ja jemand so nett und sagt mir die Lösung, oder gibt mir einen Tip... Hier ist der gesamte Code, so wie ich ihn habe... Ich verzweifle...
import java.io.*;
import java.lang.*;
class Aufg2
{
//Main
static public void main (String[]args)throws IOException{
BufferedReader din = new BufferedReader(new InputStreamReader (System.in));
int Laenge;
String Ausgabe;
String Bin;
do{
System.out.println("Bitte geben sie einen String der Laenge 16 ein");
Bin = din.readLine();
Laenge = Bin.length();
if (Laenge>16)
System.out.println("Der String darf maximal 16 Zeichen beinhalten");
}while (Laenge>16);
Ausgabe = bin2oct(Bin);
System.out.println(Ausgabe);
}
//Methode
static public String bin2oct (String Bin) throws IOException{
String Ergebnis="";
// Länge für korrekten Schleifendurchlauf festlegen
switch(Bin.length()%3)
{
case 1:
Bin = "0" + Bin;
break;
case 2:
Bin = "00" + Bin;
break;
}
// Abarbeiten
for(int i=0; i<Bin.length(); i++)
{
//Überprüfung, ob nur Binär
char Zeich = Bin.charAt(i);
if (Zeich!='0'&& Zeich!='1') throw new NoBinCharException("String enthaelt falsche Zeichen");
}
// Umwandlung in Oktal
for (int j = 0; j < Bin.length(); j+=3)
{
String dreierpaar = Bin.substring(j,j+2);
switch(Integer.parseInt(dreierpaar))
{
case 000:
Ergebnis = Ergebnis + "0";
break;
case 001:
Ergebnis = Ergebnis + '1';
break;
case 010:
Ergebnis = Ergebnis + '2';
break;
case 011:
Ergebnis = Ergebnis + '3';
break;
case 100:
Ergebnis = Ergebnis + '4';
break;
case 101:
Ergebnis = Ergebnis + '5';
break;
case 110:
Ergebnis = Ergebnis + '6';
break;
case 111:
Ergebnis = Ergebnis + '7';
break;
}
}
return Ergebnis;
}
}
class NoBinCharException extends RuntimeException{
public NoBinCharException(){super();}
public NoBinCharException(String meldung){super(meldung);}}