Sitzung: Jeden Freitag in der Vorlesungszeit ab 16 Uhr c. t. im MAR 0.005. In der vorlesungsfreien Zeit unregelmäßig (Jemensch da?). Macht mit!

Javakurs/Übungsaufgaben/DDDText/Musterloesung

Lösung: DDDText.java

public class DDDText {

	public static final String[][] letters = {
		{"     ___      ",
			 "    /   \\     ",
			 "   /  ^  \\    ",
			 "  /  /_\\  \\   ",
			 " /  _____  \\  ",
			 "/__/     \\__\\ ",
			 "              "},

			{".______   ",
			 "|   _  \\  ",
			 "|  |_)  | ",
			 "|   _  <  ",
			 "|  |_)  | ",
			 "|______/  ",
			 "          "},

			{"  ______ ",
			 " /      |",
			 "|  ,----'",
			 "|  |     ",
			 "|  `----.",
			 " \\______|",
			 "         "},

			{" _______  ",
			 "|       \\ ",
			 "|  .--.  |",
			 "|  |  |  |",
			 "|  '--'  |",
			 "|_______/ ",
			 "          "},

			{" _______ ",
			 "|   ____|",
			 "|  |__   ",
			 "|   __|  ",
			 "|  |____ ",
			 "|_______|",
			 "         "},

			{" _______ ",
			 "|   ____|",
			 "|  |__   ",
			 "|   __|  ",
			 "|  |     ",
			 "|__|     ",
			 "         "},

			{"  _______ ",
			 " /  _____|",
			 "|  |  __  ",
			 "|  | |_ | ",
			 "|  |__| | ",
			 " \\______| ",
			 "          "},

			{" __    __  ",
			 "|  |  |  | ",
			 "|  |__|  | ",
			 "|   __   | ",
			 "|  |  |  | ",
			 "|__|  |__| ",
			 "           "},

			{" __  ",
			 "|  | ",
			 "|  | ",
			 "|  | ",
			 "|  | ",
			 "|__| ",
			 "     "},

			{"       __  ",
			 "      |  | ",
			 "      |  | ",
			 ".--.  |  | ",
			 "|  `--'  | ",
			 " \\______/  ",
			 "           "},

			{" __  ___ ",
			 "|  |/  / ",
			 "|  '  /  ",
			 "|    <   ",
			 "|  .  \\  ",
			 "|__|\\__\\ ",
			 "         "},

			{" __      ",
			 "|  |     ",
			 "|  |     ",
			 "|  |     ",
			 "|  `----.",
			 "|_______|",
			 "         "},

			{".___  ___. ",
			 "|   \\/   | ",
			 "|  \\  /  | ",
			 "|  |\\/|  | ",
			 "|  |  |  | ",
			 "|__|  |__| ",
			 "           "},

			{".__   __. ",
			 "|  \\ |  | ",
			 "|   \\|  | ",
			 "|  . `  | ",
			 "|  |\\   | ",
			 "|__| \\__| ",
			 "          "},

			{"  ______   ",
			 " /  __  \\  ",
			 "|  |  |  | ",
			 "|  |  |  | ",
			 "|  `--'  | ",
			 " \\______/  ",
			 "           "},

			{".______   ",
			 "|   _  \\  ",
			 "|  |_)  | ",
			 "|   ___/  ",
			 "|  |      ",
			 "| _|      ",
			 "          "},

			{"  ______      ",
			 " /  __  \\     ",
			 "|  |  |  |    ",
			 "|  |  |  |    ",
			 "|  `--'  '--. ",
			 " \\_____\\_____\\",
			 "              "},

			{".______      ",
			 "|   _  \\     ",
			 "|  |_)  |    ",
			 "|      /     ",
			 "|  |\\  \\----.",
			 "| _| `._____|",
			 "             "},

			{"     _______.",
			 "    /       |",
			 "   |   (----`",
			 "    \\   \\    ",
			 ".----)   |   ",
			 "|_______/    ",
			 "             "},

			{".___________.",
			 "|           |",
			 "`---|  |----`",
			 "    |  |     ",
			 "    |  |     ",
			 "    |__|     ",
			 "             "},

			{" __    __  ",
			 "|  |  |  | ",
			 "|  |  |  | ",
			 "|  |  |  | ",
			 "|  `--'  | ",
			 " \\______/  ",
			 "           "},

			{"____    ____ ",
			 "\\   \\  /   / ",
			 " \\   \\/   /  ",
			 "  \\      /   ",
			 "   \\    /    ",
			 "    \\__/     ",
			 "             "},

			{"____    __    ____ ",
			 "\\   \\  /  \\  /   / ",
			 " \\   \\/    \\/   /  ",
			 "  \\            /   ",
			 "   \\    /\\    /    ",
			 "    \\__/  \\__/     ",
			 "                   "},

			{"___   ___ ",
			 "\\  \\ /  / ",
			 " \\  V  /  ",
			 "  >   <   ",
			 " /  .  \\  ",
			 "/__/ \\__\\ ",
			 "          "},

			{"____    ____ ",
			 "\\   \\  /   / ",
			 " \\   \\/   /  ",
			 "  \\_    _/  	 ",
			 "    |  |     ",
			 "    |__|     ",
			 "             "},

			{" ________  ",
			 "|       /  ",
			 "`---/  /   ",
			 "   /  /    ",
			 "  /  /----.",
			 " /________|"}
		
	};
	
	public static void main(String[] args) {
		String input; 
		if (args.length == 0) {
			System.out.println("Warnung: Keine Parameter übergeben!");
			input = "Hello World"; 
		} else {
			input = args[0];
		}

		
		String inputLowerCase = input.toLowerCase();

		//Variante 1: Ein Buchstabe pro Zeile
		for (int i = 0; i < inputLowerCase.length(); i++) {
			int index = inputLowerCase.charAt(i) - 'a';
			if (index >= 0 && index <= 25) {
				for (int line = 0; line < letters[index].length; line++) {
					System.out.println(letters[index][line]);
				}
			}
		}

		//Variante 2: Alle Buchstaben in einer Zeile
		for (int line = 0; line < letters[0].length; line++) {
			for (int i = 0; i < inputLowerCase.length(); i++) {
				int index = inputLowerCase.charAt(i) - 'a';
				if (index >= 0 && index <= 25) {
					System.out.print(letters[index][line] + " ");
				}
				if (inputLowerCase.charAt(i) == ' ') {
					System.out.print("     ");
				}
			}
			System.out.println();
		}
	}


}

Alternativer Lösungsvorschlag ohne Verwendung der Vorgabe

/**
 * This little java programm prints a given text in ascii-Art.
 * Start the programm with:
 * 		# java DDDText <Place you text here>
 * 
 * e.g.
 * 		# java DDDText Java
 * 
 * @author tkroenert
 * 
 * 
 * Warning: This programm is written on a little higher 
 * programming level as you are on the first day learing
 * java. So you programm can be much simpler.
 *
 */
public class DDDText {
	
	public static void main(String[] arguments /*[0] is the message we want to print out */) {

		/*
		 * This is for the case you do not give the programm a parameter
		 */
		if (arguments.length == 0) {
			System.out.println("Start the programm with:");
			System.out.println("\t# java DDDText <Place you text here>\n");
			System.out.println("e.g.");
			System.out.println("\t# java DDDText Java");
			System.out.println("");
		}

		/*
		 * Here begins the formatted output of the 3D-Text.
		 * 
		 * Test on your own how it works. Trial & error is
		 * the best way.
		 */

        //Userfriendly case-ignoring trick
        arguments[0] = arguments[0].toLowerCase();

        //take a character...
        for (int i = 0; i < arguments[0].length(); i++) {
			char nextChar = arguments[0].charAt(i);
                
             //...and have a look at it
             switch(nextChar)
             {
                 case 'a':
                            System.out.println("      ___      ");
                            System.out.println("     /  /\\    ");
                            System.out.println("    /  /::\\   "); 
                            System.out.println("   /  /:/\\:\\ ");  
                            System.out.println("  /  /:/~/::\\ "); 
                            System.out.println(" /__/:/ /:/\\:\\ ");
                            System.out.println(" \\  \\:\\/:/__\\/");
                            System.out.println("  \\  \\::/     ");
                            System.out.println("   \\  \\:\\     ");
                            System.out.println("    \\  \\:\\    ");
                            System.out.println("     \\__\\/     "); break;
                /*
                 * case 'b': ...
                 * case 'c': ...
                 * case 'd': ...
                 *  etc.
                 */

                case 'j':
                            System.out.println("    ___        ");          
                            System.out.println("   /  /\\    ");
                            System.out.println("  /  /:/    ");
                            System.out.println(" /__/::\\   ");
                            System.out.println(" \\__\\/\\:\\  ");
                            System.out.println("    \\  \\:\\  ");
                            System.out.println("     \\__\\:\\ ");
                            System.out.println("     /  /:/  ");
                            System.out.println("    /__/:/  ");
                            System.out.println("    \\__\\/    "); break;


                  case 'v':
                            System.out.println("      ___   ");
                            System.out.println("     /__/\\   ");
                            System.out.println("     \\  \\:\\  ");
                            System.out.println("      \\  \\:\\  ");
                            System.out.println("  _ _  \\__\\:\\ ");
                            System.out.println(" /__/\\ |  |:| ");
                            System.out.println(" \\  \\:\\|  |:|");
                            System.out.println("  \\  \\:\\__|:| ");
                            System.out.println("   \\__\\::::/  ");
                            System.out.println("       ~~~~ "); break;



                   default:
                            System.out.println(nextChar); break; //this would never happen
                }

                //some ascii-cosmetics
                System.out.println("");

		    }
		
	}

}