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/Cowsay: Unterschied zwischen den Versionen

(Aufgabenstellung: link korrigiert)
(Aufgabenstellung)
 
(16 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
=== Aufgabenstellung ===
 
=== Aufgabenstellung ===
Diese Aufgabe stellt eine etwas erweitere Version von HelloWorld dar. Als Vorbild dient das Unix-Programm Cowsay. Diesem Programm übergibt man einen Text und als Ergebnis erhält man eine kleines Bild (als ASCII) auf der Konsole, welches den übergeben Text enthält. Dies könnte so aussehen wie unter [[Javakurs2007/Cowsay#Beispiel | Beispiel]] zu sehen.
+
Diese Aufgabe stellt eine etwas erweitere Version von HelloWorld dar. Als Vorbild dient das Unix-Programm Cowsay. Diesem Programm übergibt man einen Text und als Ergebnis erhält man eine kleines Bild (als ASCII-Art) auf der Konsole, welches den übergeben Text enthält. Dies könnte so aussehen wie unter [[Javakurs2007/Cowsay#Beispiel | Beispiel]] zu sehen.
Cowsay könnt ihr hier ausprobieren: http://www.linuxbox.co.uk/cowsay.php
 
  
1) Als ersten Schritt könnt ihr mit '''System.out.println("");''' erstmal ein wenig herumprobieren und versuchen eine ASCII Graphik, die ihr euch ausgedacht habt, auszugeben. Natürlich könnt ihr auch die aus dem Beispiel nehmen.
+
1) Als ersten Schritt könnt ihr mit mehreren '''System.out.println("...");''' erstmal ein wenig herumprobieren und versuchen eine ASCII Graphik, die ihr euch ausgedacht habt, auszugeben. Natürlich könnt ihr auch die aus dem Beispiel nehmen.
  
 
2) Als zweiten Schritt könnt ihr probieren, auch etwas Text mit in die Graphik einzubinden, wie in dem ersten Beispiel zu sehen.
 
2) Als zweiten Schritt könnt ihr probieren, auch etwas Text mit in die Graphik einzubinden, wie in dem ersten Beispiel zu sehen.
 +
<i>Fuer Mehrdenker: Beachtet, dass wie bei der orginal Cowsay/Cowthink die Laenge des Strings auch beruecksichtigt wird um den String mit "_" (oder anderen Zeichen) zu unter- bzw oberstreichen. </i>
  
 
=== Beispiel ===
 
=== Beispiel ===
Zeile 17: Zeile 17:
 
                 ||----w |
 
                 ||----w |
 
                 ||    ||
 
                 ||    ||
 
  
 
=== Hinweise ===
 
=== Hinweise ===
Zeile 23: Zeile 22:
 
Der Code um ein Backslash auszugeben, sieht also so aus.
 
Der Code um ein Backslash auszugeben, sieht also so aus.
 
  System.out.println("\\");
 
  System.out.println("\\");
 +
siehe auch: [http://de.wikipedia.org/wiki/Escape-Sequenz weitere Escape Sequenzen auf de.wikipedia.org]
  
=== weitere Beispiel ===
+
=== Tipps ===
  
    oooo                               
+
'''Lesen von der Konsole'''
    `888                               
 
    888  .oooo.  oooo    ooo  .oooo. 
 
    888 `P  )88b  `88.  .8' `P  )88b 
 
    888  .oP"888    `88..8'   .oP"888 
 
    888 d8(  888    `888'   d8(  888 
 
.o. 88P `Y888""8o    `8'     `Y888""8o
 
`Y888P                                 
 
                                       
 
                                       
 
                              oooo                .o.
 
                              `888                888
 
oooo d8b  .ooooo.  .ooooo.  888  oooo  .oooo.o 888
 
`888""8P d88' `88b d88' `"Y8  888 .8P'  d88(  "8 Y8P
 
  888    888  888 888        888888.    `"Y88b.  `8'
 
  888    888  888 888  .o8  888 `88b.  o.  )88b .o.
 
d888b    `Y8bod8P' `Y8bod8P' o888o o888o 8""888P' Y8P
 
 
 
      ____  ____  ____  ____
 
    /\  \/\  \/\  \/\  \
 
    /  \___\ \___\ \___\ \___\
 
    \  / __/_/  / /  / /  /
 
    \/_/\  \__/\/___/\/___/
 
      /  \___\    /  \___\
 
      \  / __/_  _\  /  /
 
        \/_/\  \/\ \/___/
 
          /  \__/  \___\
 
          \  / _\  /  /
 
          \/_/\ \/___/
 
            /  \___\
 
            \  /  /
 
              \/___/
 
 
 
 
 
=== Links ===
 
* [http://www.network-science.de/ascii/ http://www.network-science.de/ascii/]
 
* [http://de.wikipedia.org/wiki/ASCII-Art http://de.wikipedia.org/wiki/ASCII-Art]
 
  
 +
Wenn ihr beim Ausführen eures Programms in der Konsole ein Parameter (also ein Wort) mit übergebt, so findet ihr ihn an Position [0] im String-Array eurer main-Methode wieder.
  
 +
Beispiel:
 +
java cowsay rocks
 +
-> arguments[0] enthält rocks.
  
 +
Bei einem Satz muesst ihr diesen in Hochkomma angeben.
  
 +
Beispiel:
 +
java cowsay "Java Rocks"
 +
-> arguments[0] enthaelt nun <i> Java Rocks </i>
  
 
== Kommentare ==
 
== Kommentare ==
Zeile 82: Zeile 54:
  
 
Dankeschön ;)
 
Dankeschön ;)
 +
Cowsay macht Spaaaaß :-D
 +
 +
 +
----
 +
 +
 +
Hey, haben es hingekriegt,dass die Kuh was sagt, wollen aber ,dass die Kuh keine Sprechblase hat,wenn man nichts eingibt,wie sollen wir das machen?
 +
 +
Haben schon mit if und else args[0] !== null probiert, klappt aber nicht, bei keiner Eingabe kommt die Fehlermeldung:
 +
 +
Exception in treahd "main" java.lang.ArrayIndexOutOfBoundsException: 0 ...
 +
 +
 +
----
 +
 +
 +
Sebastian Wjertzoch
 +
 +
Einfach auf Anzal der Elemente in args prüfen.
 +
 +
<pre>
 +
public static void main(String[] args){
 +
if(args.length > 0){
 +
printCow(args[0]);
 +
} else {
 +
printCow("My milk is empty!");
 +
}
 +
}
 +
</pre>
 +
 +
Wenn kein Eintrag drin ist, wird einfach ein Text gegeben...
 +
Bestimmt nicht die eleganteste Lösung aber es läuft.
 +
 +
[[Kategorie:Java]]
 +
[[Kategorie:Java_Aufgaben]]

Aktuelle Version vom 3. März 2014, 11:35 Uhr

Aufgabenstellung

Diese Aufgabe stellt eine etwas erweitere Version von HelloWorld dar. Als Vorbild dient das Unix-Programm Cowsay. Diesem Programm übergibt man einen Text und als Ergebnis erhält man eine kleines Bild (als ASCII-Art) auf der Konsole, welches den übergeben Text enthält. Dies könnte so aussehen wie unter Beispiel zu sehen.

1) Als ersten Schritt könnt ihr mit mehreren System.out.println("..."); erstmal ein wenig herumprobieren und versuchen eine ASCII Graphik, die ihr euch ausgedacht habt, auszugeben. Natürlich könnt ihr auch die aus dem Beispiel nehmen.

2) Als zweiten Schritt könnt ihr probieren, auch etwas Text mit in die Graphik einzubinden, wie in dem ersten Beispiel zu sehen. Fuer Mehrdenker: Beachtet, dass wie bei der orginal Cowsay/Cowthink die Laenge des Strings auch beruecksichtigt wird um den String mit "_" (oder anderen Zeichen) zu unter- bzw oberstreichen.

Beispiel

 _____________
< Java rocks! >
 -------------
       \   ^__^
        \  (oo)\_______
           (__)\       )\/\
               ||----w |
               ||     ||

Hinweise

Wenn ihr auf der Konsole ein Backslash "\" ausgeben wollt, dann müsst ihr dieses Zeichen, da es selbst ein sogenanntes Escapezeichen ist, mit einem Backslash "escapen". Der Code um ein Backslash auszugeben, sieht also so aus.

System.out.println("\\");

siehe auch: weitere Escape Sequenzen auf de.wikipedia.org

Tipps

Lesen von der Konsole

Wenn ihr beim Ausführen eures Programms in der Konsole ein Parameter (also ein Wort) mit übergebt, so findet ihr ihn an Position [0] im String-Array eurer main-Methode wieder.

Beispiel:

java cowsay rocks

-> arguments[0] enthält rocks.

Bei einem Satz muesst ihr diesen in Hochkomma angeben.

Beispiel:

java cowsay "Java Rocks"

-> arguments[0] enthaelt nun Java Rocks

Kommentare

Wenn du Anmerkungen zur Aufgabe hast oder Lob und Kritik loswerden möchtest, ist hier die richtige Stelle dafür. Klicke einfach ganz rechts auf "bearbeiten" und schreibe deinen Kommentar direkt ins Wiki. Keine Scheu, es geht nichts kaputt ;)

wie kann man die 2 "" zeichen einbauen?

Einfach escapen, also \" schreiben. --Robert Buchholz 22:50, 30. Mai. 2007 (CEST)

Dankeschön ;) Cowsay macht Spaaaaß :-D




Hey, haben es hingekriegt,dass die Kuh was sagt, wollen aber ,dass die Kuh keine Sprechblase hat,wenn man nichts eingibt,wie sollen wir das machen?

Haben schon mit if und else args[0] !== null probiert, klappt aber nicht, bei keiner Eingabe kommt die Fehlermeldung:

Exception in treahd "main" java.lang.ArrayIndexOutOfBoundsException: 0 ...




Sebastian Wjertzoch

Einfach auf Anzal der Elemente in args prüfen.

public static void main(String[] args){
	if(args.length > 0){
		printCow(args[0]);
	} else {
		printCow("My milk is empty!");
	}
}

Wenn kein Eintrag drin ist, wird einfach ein Text gegeben... Bestimmt nicht die eleganteste Lösung aber es läuft.