ASCII-Tabelle

Rivi92

Mitglied
Hi Leute, habe folgendes Problem:
Habe in der Uni die Aufgabe "Erstellen Sie ein Programm, das eine Tabelle ausgegibt, deren Zeilen wie im
nachfolgenden Beispiel formatiert sind:

Dez Hex Oct Dez Hex Oct Dez Hex Oct Dez Hex Oct
0 0x00 0000 CTRL 32 0x20 0040 64 0x40 0100 @ 96 0x60 0140 `
1 0x01 0001 CTRL 33 0x21 0041 ! 65 0x41 0101 A 97 0x61 0141 a
...
9 0x09 0011 \t 41 0x29 0051 ) 73 0x49 0111 I 105 0x69 0151 i
10 0x0a 0012 \n 42 0x2a 0052 * 74 0x4a 0112 J 106 0x6a 0152 j
...
30 0x1e 0036 CTRL 62 0x3e 0076 > 94 0x5e 0136 ^ 126 0x7e 0176 ~
31 0x1f 0037 CTRL 63 0x3f 0077 ? 95 0x5f 0137 _ 127 0x7f 0177 CTRL
"

jetzt habe ich soweit ein programm geschrieben was weitestgehend exakt diesen Angaben entspricht (der Dozent hat auch noch ein bisschen gesagt wies aussehen soll also nciht über einige umständliche Sachen wundern)

Java:
public class Zeichentabelle
{
	public static void characterHead ()
	{
		System . out . print ("Dez Hex Oct ");
	}
	public static void characterEntry (int n)
	{
		System . out . print (n);								// Dezimalzahl
		System . out . print ( Integer . toHexString (n));		// Hexadezimalzahl
		System . out . print ( Integer . toOctalString (n));	// Oktalzahl
		System . out . print ((char) n);						// Zeichen
	}
	public static void main ( String [] args )
	{
		characterHead ();
		characterHead ();
		characterHead ();
		characterHead ();
		System . out . println ();
		for ( int n = 0; n < 32; n = n+1)
		{
			characterEntry (n);
			characterEntry (n +32);
			characterEntry (n +64);
			characterEntry (n +96);
			System . out . println ();
		}
	}
}

nur habe ich ein Problem, ich weiß nicht wie ich die Ausgabe so formatiert kriege. Ich kriege alles zusammenhängend ausgegeben... (könnt ihr ja sonst mit meinem script unten testen). ich habe mir gedacht das ich da sowas wie tabulatoren (\t) einbauen muss aber alle versuche bis jetzt sind am compilator gescheitert. hat jemand vielleicht nen tipp oder ne idee?
 
Die Tabelle, wie sie eigentlich aussehen soll, wird hier leider nicht ganz richtig abgebildet. Es sollen halt 4 Blöcke mit jeweils 4 Spalten (Dez, Hex, Oct und das Zeichen) sein
 
nur habe ich ein Problem, ich weiß nicht wie ich die Ausgabe so formatiert kriege. Ich kriege alles zusammenhängend ausgegeben... (könnt ihr ja sonst mit meinem script unten testen). ich habe mir gedacht das ich da sowas wie tabulatoren (\t) einbauen muss aber alle versuche bis jetzt sind am compilator gescheitert. hat jemand vielleicht nen tipp oder ne idee?
Mhm? +"\t" sollte eig. gehen, also z.B. [c] System.out.print(n+"\t");[/c] + bei den anderen eben auch.
Man kann sich eig. die toHex oder toOctal sparen und könntest z.B. System.out.format benutzen.
Java:
	public static void characterEntry(int n) {
		System.out.format("  %4d %0#4x %0#4o %4c  ", n, n, n, n);
	}
(die Überschrift dann im selben Stile)

Dennoch wirst du es (so glaube ich) nicht 100% schaffen dass alles untereinander steht, wenn du auch den Character selbst drucken sollst. Denn 9 z.B. = TAB usw. macht das dann ja alles zunichte ???:L
 
also wenn man bei System . out . print ("Dez Hex Oct "); ein +"\t" einfügt hat man schonmal die überschriften richtig hingedreht, aber hlt das da drunter is nich so einfach zu formatieren
 
Hier die Lösung

Java:
public class Zeichentabelle
{
	public static void characterHead()
	{
		System . out . print("Dez Hex  Oct       ");
	}

	public static void characterEntry(int n)
	{
		//Dezimalzahl
		if(n < 10)
		{
			System . out . print("  " + n + " ");
		}
		else if(n < 100)
		{
			System . out . print(" " + n + " ");
		}
		else
		{
			System . out . print(n + " ");
		}

		//Hexadezimalzahl
		if(n < 16)
		{
			String xHex = Integer.toHexString(n);
			System . out . print ("0x0" + xHex + " ");
		}
		else
		{
			String xHex = Integer.toHexString(n);
			System . out . print ("0x" + xHex + " ");
		}

		//Oktalzahl
		if(n < 8)
		{
			String xHex = Integer.toOctalString(n);
			System . out . print("000" + xHex + " ");
		}
		else if(n < 64)
		{
			String xHex = Integer.toOctalString(n);
			System . out . print("00" + xHex + " ");
		}
		else
		{
			String xHex = Integer.toOctalString(n);
			System . out . print("0" + xHex + " ");
		}

		//Zeichen
		if(n == '\t')
		{
			System . out . print("\\t   ");
		}
		else if(n == '\n')
		{
			System . out . print("\\n   ");
		}
		else if(Character.isISOControl((char) n))
		{
			System . out . print("CTRL" + " ");
		}
		else
		{
			System . out . print((char) n + "    ");
		}
	}

	public static void main( String [] args )
	{
		characterHead();
		characterHead();
		characterHead();
		characterHead();

		System . out . println();

		for(int n = 0; n < 32; n = n+1)
		{
			characterEntry(n);
			characterEntry(n +32);
			characterEntry(n +64);
			characterEntry(n +96);
			System . out . println();
		}
	}
}
 
@Rivi92: Da ich gerade die gleiche Aufgabe zu lösen habe, denke ich mal, ich weiß wo du studierst 😉

@Didito: Danke 😀
 

Zurück
Oben