PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Was tun in langweiligen Informatikstunden?


ethrandil
2004-02-17, 11:20:56
Hi,
ich hab grad InformatikLK. Wir lernen hier OOP mit Java und BlueJ.

Ist echt lustig, nur lern ich hier nix ;)

Sowas entsteht dann dabei:


private boolean echo(String s){
if(s==null)
return false;
System.out.println(s);
return true;
}

public synchronized void alleNotizenAusgeben(){
for(int i = notizen.size(); i > 0 && echo((i)+": "+notizen.get(--i)););
}


Habt ihr noch mehr davon? (und nicht die standarddinger bitte *gg*)

Und sagt mal die Ausgabe vorraus, wenn 'notizen' eine ArrayList mit den Elementen [0]=>"Hallo", [1]=>"Welt", [2]=>"!" ist.

- Eth

Aqualon
2004-02-17, 12:08:19
Ist ja ne nette for-Schleife ;)

Ergebnis sollte


!
Welt
Hallo


sein, da du ja rückwärts zählst.

Diese Syntax für die for-Schleife kannte ich noch gar nicht. Folgende finde ich übersichtlicher, aber ist wahrscheinlich Geschmackssache.


public synchronized void alleNotizenAusgeben(){
for(int i = notizen.size(); i > 0;)
{
echo((i)+": "+notizen.get(--i));
}
}


Aqua

mirp
2004-02-17, 12:19:36
Wenn dir langweilig ist, schreib mal ein Programm, welches seinen eigenen Quellcode berechnet und ausgibt, ohne ihn aus einer anderen Quelle auszulesen.

HellHorse
2004-02-17, 12:20:00
BlueJ ist lustig, oder ;)
Nicht so toll wie Smalltalk, aber immerhin.

Wie wärs damit

public void pickLeft() throws InterruptedException {
if ( hasLeft_ )
return;
else {
if ( hasRight_ ) {
left_.get();
hasLeft_ = true;
updateState( PhilTable.EATING );
}
else {
left_.get();
hasLeft_ = true;
updateState( PhilTable.GOTLEFT );
}
}
}

der ist AFAIK aus einem Buch, wurde uns aber so abgeben (Übungsaufgabe concurrent programming).

Stone2001
2004-02-17, 12:28:02
Original geschrieben von mirp
Wenn dir langweilig ist, schreib mal ein Programm, welches seinen eigenen Quellcode berechnet und ausgibt, ohne ihn aus einer anderen Quelle auszulesen.
Interessante Aufgabe! Ist die lösbar?
Alternativ dazu kannst du ja ein Programm schreiben, das seine eigene Gödel-Nummer berechnet!

Trap
2004-02-17, 13:42:20
Original geschrieben von Stone2001
Interessante Aufgabe! Ist die lösbar?
Alternativ dazu kannst du ja ein Programm schreiben, das seine eigene Gödel-Nummer berechnet!
Ist lösbar und gibt es für eigentlich alle Programmiersprachen schon. So ein Programm nennt man Quine.

HellHorse
2004-02-17, 13:48:09
Original geschrieben von ethrandil

private boolean echo(String s){
if(s==null)
return false;
System.out.println(s);
return true;
}
..



Das geht aber besser ;)

public static void main(String[] args) {
output("a String");
output(null);
}

public static boolean output(String aString) {
if (aString instanceof String) {
System.out.println("a String: "+aString);
return true;
}
else {
return output((Object) aString);
}
}

public static boolean output(Object anObject) {
System.out.println("an Object: "+anObject);
return false;
}

zeckensack
2004-02-20, 08:49:28
Original geschrieben von ethrandil
Und sagt mal die Ausgabe vorraus, wenn 'notizen' eine ArrayList mit den Elementen [0]=>"Hallo", [1]=>"Welt", [2]=>"!" ist.

- Eth !Welt

mirp
2004-02-20, 09:44:51
Ich glaub, bislang ist noch keine vorausgesagte Ausgabe korrekt. :|

El Fantastico
2004-02-20, 10:22:43
Original geschrieben von HellHorse
Das geht aber besser ;)

public static boolean output(String aString) {
if (aString instanceof String) {
System.out.println("a String: "+aString);
return true;
}
else {
return output((Object) aString);
}
}

Das verstehe ich nicht, hab ich jetzt ein grosses Brett vor`m Kopf?
Wird "aString instanceof String" nicht IMMER zu wahr ausgewertet werden?

Aqualon
2004-02-20, 10:53:28
Original geschrieben von mirp
Ich glaub, bislang ist noch keine vorausgesagte Ausgabe korrekt. :|
Meine vorausgesagte Ausgabe war korrekt, hab es mit Java 1.4.2 nachgeprüft. Das Array wird von hinten nach vorne durchgegangen und der Wert jeweils in einer neuen Zeile ausgegeben.

Aqua

zeckensack
2004-02-20, 10:54:38
Original geschrieben von mirp
Ich glaub, bislang ist noch keine vorausgesagte Ausgabe korrekt. :| Oi shice ya :freak:
Korrektur:
3: !2: Welt1: Hallo

HellHorse
2004-02-20, 10:58:49
Original geschrieben von El Fantastico
Das verstehe ich nicht, hab ich jetzt ein grosses Brett vor`m Kopf?
Wird "aString instanceof String" nicht IMMER zu wahr ausgewertet werden?
Im Fall von null eben nicht. (null instanceof RefernceType) ist immer false.
http://java.sun.com/docs/books/jls/second_edition/html/expressions.doc.html#80289
Es wird aber auch auch nicht direkt output(Object) verwendet für output(null), da null von jeden Typ ist. Muss so sein, denn sonst könnte man nicht einfach null übergeben, wo ein Refenztyp erwartet wird. Daher ist output(String) spezifischer.
Wusste es aber selbst nicht, fand es druch ausprobieren raus. Im Nachhinein macht so Zeugs immer Sinn.
Natürlich wäre es einfacher auf == null zu testen, aber das wäre OT ;)

El Fantastico
2004-02-20, 12:41:00
Original geschrieben von HellHorse
Im Fall von null eben nicht...
Sorry ich bleib mal ein bisschen OT. Gäbe es ein Methode output(Integer), welche wäre denn dann spezifischer :???:

Aqualon
2004-02-20, 12:48:24
Original geschrieben von zeckensack
Oi shice ya :freak:
Korrektur:
3: !2: Welt1: Hallo
Wieder falsch, genauso wie meins oben *g*

Jetzt mal das (hoffentlich :D) richtige Ergebnis:


3: !
2: Welt
1: Hallo


Aqua

HellHorse
2004-02-20, 14:44:54
Original geschrieben von El Fantastico
Sorry ich bleib mal ein bisschen OT. Gäbe es ein Methode output(Integer), welche wäre denn dann spezifischer :???:
Gar keine => kompiliert nicht.

ethrandil
2004-02-20, 14:53:28
Original geschrieben von Aqualon
Jetzt mal das (hoffentlich :D) richtige Ergebnis:

3: !
2: Welt
1: Hallo


Ich glaub so wars :up:
Aber ich mus es noch mal testen.. *g*

- Eth

EDIT: Stimmt ;-)