Zurück ins Dezimalsystem

Status
Nicht offen für weitere Antworten.

Vitali

Mitglied
Hallo Leute,
also ich hab mal wieder n Knoten im Hirn :lol:.
Wir sollen (Hausaufgabe) ein Programm schreiben das Zahlen in verschiede Zahlensysteme konvertiert (Binär, Oktal, Hexadezimal, Dezimal).

Der Hinweg (von dezimal ausgehend) hab ich schon geschreiben.
Beim Rückweg muss ich aber jetzt das Horner Schema verwenden.
Und nun das Problem:
Ich dachte mir das ich z.B. eine binäre Zahl (String nicht int) in ein Array packe und dann mit ner Schleife durchrenne.
Leider weiß ich nicht wie man java mitteilt:

NIMM DIE ERSTE STELLE MEINES STRINGS UND SETZTE SIE AUF DIE ERSTE STELLE DES FELDES USW.

erlich gesagt weiß ich auch nicht wie ich eine bestimmte stelle eines strings überhaupt ausdrücke
:bahnhof:

bin für jede form von hilfe dankbar

PS: ist vielleicht unnötig das zu erwähnen: wir dürfen natürlich keine java-internen methoden verwenden (wie toHexString() oder so)
 
M

maki

Gast
*verschoben*

Deine Idee ist nicht verkehrt, dürft ihr denn [c]String.toCharArray()[/c] verwenden?
 

w0ddes

Bekanntes Mitglied
Hallo,

also meine erste Idee wäre es, das ganze in einen char-Array umzuwandeln -> jedes Stelle bekommt ein eigenes Feld und dann jedes char-feld in in ein int-feld in einem int-array umwandeln.

Pseudocode:

Java:
String myString = "1101011";
char [] myCharArray = myString.toCharArray ();
int[] myIntArray = new int[myString.length];

for(int i = 0; i < myString.length; i++){
  myIntArray[i] = Integer.parseInt(myCharArray[i]);
}
 
Zuletzt bearbeitet:

dngfng

Aktives Mitglied
upps - wer lesen kann ist ganz klar im vorteil - hatte überlesen das du den hinweg bereits hast aber den Rückweg brauchst.

Java:
	public static void main(String[] args) {
	    int in = 51;
	    System.out.println("Integer: " + in);
	    //integer to binary
	    String by = Integer.toBinaryString(in);
	    System.out.println("Byte: " + by);
	    //integer to hexadecimal
	    String hex = Integer.toHexString(in);
	    System.out.println("Hexa decimal: " + hex);
	    //integer to octal
	    String oct = Integer.toOctalString(in);
	    System.out.println("Octal: " + oct);
  }


Das Objekt Integer stellt die relevanten Methoden bereit.
 
Zuletzt bearbeitet:

Vitali

Mitglied
Sorry, :oops: hab nicht gewusst das es so einen Tread gibt.

@maki
in der aufgabenstellung steht: "keine Methoden zur Umrechnung von Zahlen zwischen verschiedenen Systemen"
also wahrscheinlich ja

@ w0ddes
danke war genau was ich gesucht habe

ich glaub ich komm jetzt allein klar :rtfm:

MfG
Vitali
 

dngfng

Aktives Mitglied
So jetzt aber:

Java:
            String binaryString = "1001";
	    int binaryBase = 2;
	    int decimal = Integer.parseInt(binaryString, binaryBase);
	    System.out.println(decimal);
	    int octalBase = 8;
	    String octalString = "72";
	    int octal = Integer.parseInt(octalString, octalBase);
	    System.out.println(octal);
 

dngfng

Aktives Mitglied
hast vollkommen recht lies doch mal mein PS ganz unten im ersten beitrag
:D

lol - ja - besser alles doppelt und dreifach lesen - währe ja sonst zu einfach.

Zu Uni Zeiten hatten wir uns auch sehr über die Aufgabe gefreut eine Linked List in Java zu programmieren anstatt ArrayList oder der gleichen verwenden zu dürfen.
 

w0ddes

Bekanntes Mitglied
Freut mich, dass ich als "fortgeschrittener Anfänger" dir helfen konnte :D
Bin selbst nur hier ins Forum gekommen um Hilfe zu bekommen und nun konnte ich sogar selbst helfen :) :idea:
 

Vitali

Mitglied
was ne Linked List ist weiß ich leider nicht ???:L
aber ich werde alle tipps behärzigen

ich schleiß etz mal
 

dngfng

Aktives Mitglied
So jetzt aber Binary zu Dezimal:

Java:
	    String binaryString = "1001";
	    
	    char[] bin = binaryString.toCharArray();
	    
	    
	    int binValue = 1;
	    int decimal = 0;
	    
	    for(int i = bin.length-1;i>=0;i--) {
	    	if(bin[i]=='1') {
	    		decimal+=binValue;
	    	}
	    	binValue=binValue*2;
	    }

Ich geh jetzt mal von Little-Endian aus.
 

Vitali

Mitglied
ach gut das ich dich nochmal treff weil:

"parseInt" nur strings verarbeitet keine chars

daher funktioniert es nicht ganz
 

w0ddes

Bekanntes Mitglied
steht die frage noch offen?

Wenn ja, könnte das so funktionieren?

Java:
Integer.parseInt(String.valueOf(myCharArray[i]));
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben