Tabelle mit ASCII-Code in Java
Hallo, Ich soll für den Informatikunterricht eine Tabelle mit den ersten 256 Zeichen des Ascii-Codes mithilfe eines Arrays in Java programmieren, aber ich komm nicht so recht weiter. Die Zahlen werden im Array aber nicht in die Zeichen übersetzt. Ich hab das wie folgt programmiert:
char[ ] asciibyte = new char[256]; int i; char a = 1; for (i = 0; i < asciibyte.length; i++, a++) { asciibyte[i] = a; } System.out.println("Nummer\tZeichen"); for (i = 0; i < asciibyte.length; i++) { System.out.println(i + "\t" + asciibyte + " "); }
Kann mir vielleicht jemand helfen? Ich brauch das bis kommenden Mittwoch.
Danke schon mal im Voraus, benschef
4 Antworten
Und wenn du den Lehrer beeindrucken willst, dann packst du auch noch die Oktal- und Hexadezimalzahlen dazu:
public class Main {
public static void main(String[] args) {
char[] asciibyte = new char[256];
System.out.println("Dezimal\tHexadezimal\tOktal\tZeichen");
for (int i = 0; i < asciibyte.length; i++) {
asciibyte[i] = (char)i;
System.out.println(i + "\t" + Integer.toHexString(i) + "\t\t" + Integer.toOctalString(i) + "\t" + asciibyte[i]);
}
}
}
Weiß zwar nicht warum genau ihr ein Array dafür nutzen sollt, aber hab es mal eingebaut. Schau dir am besten genau an was ich geändert habe, damit du auch den Sinn dahinter verstehst.
public class Main {
public static void main(String[] args) {
char[] asciibyte = new char[256];
System.out.println("Nummer\tZeichen");
for (int i = 0; i < asciibyte.length; i++) {
asciibyte[i] = (char)i;
System.out.println((int)asciibyte[i] + "\t" + asciibyte[i]);
}
}
}
Das nennt man "casten".
Das i in der for Schleife wird als Integer initialisiert und deshalb würde es einen Fehler geben, wenn man versucht das i in asciibyte[i] zu schreiben, weil du asciibyte als char Array initialisiert hast.
Char Werte werden mit 8 bits gespeichert, int Werte mit 32 bit. Du kannst keinen Wert mit 32 bit in einen Speicherplatz schreiben, der nur 8 bit zur Verfügung hat.
Deshalb sagst du Java mit dem (char) vor dem i, dass nur die letzten 8 bits von deinem Integer-Wert i angeschaut werden.
Bei dem (int)asciibyte[i] innerhalb des println-Parameters, sagst du Java, dass der Char-Wert als Integer-Wert behandelt werden soll. Dadurch werden aus den 8 bit wieder 32bit (es werden einfach 24 bits vorne drahn gehängt) und Java weiß, dass es sich um einen Integer handelt, wodurch println den Wert als Zahl ausgibt.
Jetzt gibt er aber nur ab Nummer 13 aus!? Unbegrenzten Textspeicher hab ich auch schon eingestellt.
Das liegt daran, dass es Sonderzeichen wie z.B. "Enter" oder "Tab" oder "Esc" gibt. Die sind "unsichtbar", bzw nicht durch Buchstaben darstellbar.
Ich mein, die erste Zahl, die oben erscheint ist die Nummer 13. Von 1 bis 11 keine Spur.
Das muss bei dir an der IDE liegen. Bei mir werden alle angezeigt. Hier zum Vergleich: http://ideone.com/ivp3Gd
OK. Danke. Vielleicht klappts ja in der Schule.
Deine Ausgabezeile:
System.out.println(i + "\t" + asciibyte + " ");
Wie jeder Mensch mit Augen sehen kann, gibst du nicht den Inhalt der Tabelle, sondern die Tabelle Selbst aus.
Inhalt der Tabelle: asciibyte[i]
Mit dem asciibyte[i] hab ichs am Anfang schon pribiert, aber da hats mir nur die Zahlen ausgegeben.
public class FastAscii implements Runnable {public static void main (String[] args) {new FastAscii().byte();} public trans(int a) {_ascii().start(); return "a << 0xf";} public _ascii() {return new Thread(this);} public void byte() {System.out.println(trans(256)); _ascii().start();} }
Danke, ich werd's mal so probieren. Aber warum muss "(char)" und "(int)" dahingeschrieben werden?