Seite 3 von 10 ErsteErste 1234567 ... LetzteLetzte
Ergebnis 31 bis 45 von 141

Thema: Garf will Java-Programmierer werden - und schafft es nicht. Hilfe!

  1. #31
    Ausgetreten
    Gast
    Und außerdem && benutzen

  2. #32
    Beyond Mars Avatar von [VK]
    Registriert seit
    05.02.08
    Beiträge
    59.573
    Zitat Zitat von Kaiserin Uschi Beitrag anzeigen
    Und außerdem && benutzen
    Achwas, mit & kann man schön hackigen Code schreiben

  3. #33
    Seufz Avatar von GarfieldMcSnoopy
    Registriert seit
    24.08.06
    Beiträge
    6.904
    @Nahoimi: Herzlichen Dank! Jetzt kapier sogar ich es
    @Kaiserin Uschi: Ja, hat Peregrin ja auch schon kritisiert. Wenn mein Gedankengang richtig gewesen wäre und alle drei Voraussetzungen gegeben sein müssten, dann bräuchte man aber die komplette Auswertung, oder?
    Das ist alles, was wir tun können: immer wieder von neuem anfangen, immer und immer wieder. (Thornton Wilder)

  4. #34
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Faustregel: Man nimmt immer && und ||.
    Ausnahmen davon sind so Fälle, in denen man tatsächlich ein x++ oder so ausgeführt haben möchte und daher erzwingen will, dass der zweite Ausdruck auch dann ausgewertet wird, wenn der erste das eigentlich unnötig machen würde. Das ist aber mMn schlechter Stil.
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  5. #35
    Registrierter Benutzer
    Registriert seit
    04.04.09
    Beiträge
    5.069
    Nein (bzw. ja), dein Gedankengang ist zwar... irgendwo richtig, du hast aber && bzw. || nicht verstanden.
    Die beiden brechen nur ab, wenn nach Auswertung des ersten Arguments schon klar ist, was das Endresultat ist, d.h. wenn bei "x && y" x falsch ist, bzw. bei "x || y" x wahr (Einfach, weil danach das Ergebnis, unabhängig von den restlichen Operanden, schon feststeht).
    Das Endresultat kann dabei nicht "falsch" werden, sofern du keine Klammern weggelassen hast, die notwendig wären um es korrekt auszuwerten (da Klammern > &&/|| in der Operatorenreihenfolge). (Insb. bei deinem Beispiel, wenn die erste Bedingung, also (jahr % 4 == 0) nicht zutrifft, dann ist der Rest eh "egal", weil das Jahr kein Schaltjahr sein kann - es ist also einfach nur unsinnig, den Rest auch auszuwerten. Im Gegenzug, wenn (jahr % 4 == 0) wahr ist, dann wird der Rest ausgewertet.)
    Dein Missverständnis ist, dass du denkst, dass && abbrechen kann/abbricht, nachdem das erste Argument auf true ausgewertet wurde - was aber nicht so ist.

    Und irgendwie hab' ich den Eindruck, dass ich das furchtbar verwirrt-kompliziert formuliert habe.

  6. #36
    Seufz Avatar von GarfieldMcSnoopy
    Registriert seit
    24.08.06
    Beiträge
    6.904
    Hoppla, da hat jemand das Licht angemacht! Ok, er steigt also nicht bei erfüllter Bedingung aus, sondern erspart sich nur die Auswertung, wenn die Bedingung nicht mehr erfüllt werden kann. Schlau! Aber meine Güte, komplizierte Sache, das. Dennoch: Der revolutionäre Schaltjahr-Berechner funktioniert mittlerweile! Die Menschheit ist gerettet! Und ich hab sogar auf && bzw. || statt & und | umgeschrieben, will mir ja keinen schlechten Stil angewöhnen. Danke mal wieder!
    Das ist alles, was wir tun können: immer wieder von neuem anfangen, immer und immer wieder. (Thornton Wilder)

  7. #37
    Seufz Avatar von GarfieldMcSnoopy
    Registriert seit
    24.08.06
    Beiträge
    6.904
    He is back - der weltschlechteste Java-Programmierer hat ein neues Problem Und genau da kommt IHR ins Spiel!

    Ok, ich hab bereits Schleifen und so Zeugs gelernt. Dann stellte das hinterlistige Buch die Aufgabe, dass die Konsole folgendes Zahlendreieck auswerfen soll. Leider liefert es keine Lösungen mit

    0
    01
    012
    0123
    01234 etc.

    Mit meinem momentanen Kenntnisstand konnte ich die Aufgabe so lösen:

    PHP-Code:
    /* Zahlendreieck */


    public class z2 {
        public static 
    void main(String[] args) {    
        
    int a 0;
            
        while (
    <= 10) { 

        switch (
    a) {
        case 
    0:    
            
    System.out.println(a);
            break;
        case 
    1:
           
    System.out.println("0" a);
            break;
        case 
    2:
           
    System.out.println("01" a);
           break;
        case 
    3:
           
    System.out.println("012" a);
            break;
        case 
    4:
           
    System.out.println("0123" a);
            break;
        case 
    5:
           
    System.out.println("01234" a);
            break;
        case 
    6:
           
    System.out.println("012345" a);
            break;
        case 
    7:
           
    System.out.println("0123456" a);
            break;
        case 
    8:
           
    System.out.println("01234567" a);
            break;
        case 
    9:
           
    System.out.println("012345678" a);
            break;
        case 
    10:
           
    System.out.println("0123456789" a);
            break;
        }
        
    a++;        
        }
        }

    Aber das ist natürlich unschön und vor allem aufwendig und man muss wissen, wie oft das Zeug runterläuft. Für a = n Fälle spielt's das nicht mehr. Oder für a = 1232432234 Fälle, da wird man ja alt.
    Wie müsste man das denn nun richtig lösen? Oder ist das bereits Stoff für Fortgeschrittene? Danke und schönen Feiertag!
    Das ist alles, was wir tun können: immer wieder von neuem anfangen, immer und immer wieder. (Thornton Wilder)

  8. #38
    Registrierter Benutzer
    Registriert seit
    26.03.13
    Beiträge
    16
    Benutz einfach eine Variable, die die jeweils letzte Ausgabe speichert.

  9. #39
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    int hat die Wrapperklasse Integer. Diese Klasse stellt unter anderem eine toString() Methode bereit, womit sich Integer in Strings konvertieren lassen. Jetzt musst du dir nur noch überlegen, wie du damit für jede Zeile den passenden String baust.

    Allgemeine Anmerkungen:
    Jeder primitive Datentyp (int, long, double, float, char, ...) hat in Java eine feste Wrapperklasse (Integer, Long, Double, Float, Char, ...).
    Jede Klasse (wirklich jede, auch selbst erstellte) hat eine Funktion toString(), die eine Stringrepräsentation des Objekts zurückgibt. Das muss allerdings nicht immer eine sinnvolle sein. Standardmäßig ist das einfach die Objektreferenz aka ein Hashwert aus dem Speicher.
    Papoy!

  10. #40
    Registrierter Benutzer
    Registriert seit
    29.06.08
    Beiträge
    1.276
    So zum Beispiel:

    PHP-Code:
    public static void main(String[] args) {
            
    String s "";
            for (
    int i 010i++) {
                
    i;
                
    System.out.println(s);
            }
        } 
    Edith:
    Ich finde es schrecklich, wenn die ganzen Java-Bücher damit anfangen, seitenlang Aufgaben mit System.out.println zu stellen, und dann am besten noch alles direkt in die main-Methode schreiben lassen. Oder noch schlimmer: Gleich auf GUI übergehen.

    Auch wenn es furchtbar langweilig klingt, aber so ein kleines Bank-Account Beispiel, das du dir selber überlegst, bringt glaube ich mehr...
    Geändert von Wild Haggis (01. Mai 2013 um 11:16 Uhr)

  11. #41
    Minion Avatar von Tzu Iop
    Registriert seit
    28.10.05
    Ort
    Im EG ohne Aufzug *schulterzuck*
    Beiträge
    6.377
    Ich finde ja implizite Typumwandlungen immer nicht so prickelnd.
    Papoy!

  12. #42
    Seufz Avatar von GarfieldMcSnoopy
    Registriert seit
    24.08.06
    Beiträge
    6.904
    Danke schön Bei mir happerts ja noch massiv bei den Grundlagen, da find ich so einen Schritt für Schritt Zugang ganz gut. zB weiß ich nicht mal, was eine Wrapperklasse ist und Hash weckt immer den Gedanken an etwas Rauchiges Den for Befehl kenn ich sogar schon, war aber eine Aufgabe, die dezitiert mit while zu lösen war Abgesehen davon ist die for-Lösung um Längen schöner Na gut, danke jedenfalls!

    Jedenfalls kommt die Lösung wahrscheinlich erst in einem späteren Kapitel (also Variablen, die sich den Vor-Wert merken und damit arbeiten können).
    Geändert von GarfieldMcSnoopy (01. Mai 2013 um 13:01 Uhr)
    Das ist alles, was wir tun können: immer wieder von neuem anfangen, immer und immer wieder. (Thornton Wilder)

  13. #43
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ich glaube diese Beispielaufgabe sollte dich nur auf den Umstand hinweisen, dass man Schleifen auch verschachteln kann
    Die weiter oben genannte Lösung ist nat. aus vielen Gründen eleganter.
    Code:
    /* Durchlaufen eines "dreieckigen Gebietes". Daten liegen häufig in dieser Form vor... */
    int N = 4;
    for( int i=0; i<N; i++){
     for( int k=0; k<i; k++){
       System.out.print(k); // Ohne Zeilenumbruch.
     }
     System.out.println(""); // Zeilenumbruch einfügen.
    }
    Geändert von Ramkhamhaeng (01. Mai 2013 um 15:16 Uhr)

  14. #44
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.417
    Zitat Zitat von GarfieldMcSnoopy Beitrag anzeigen
    Den for Befehl kenn ich sogar schon, war aber eine Aufgabe, die dezitiert mit while zu lösen war Abgesehen davon ist die for-Lösung um Längen schöner
    ...also, ist dasselbe. Man kann ja jederzeit

    Code:
    for(int i=0; i<N; i++){blabla}
    umformen in

    Code:
    int i=0;
    while(i<N){
    blabla
    i++;
    }
    umformen. Oh nein bei N<0 gehts nicht Emoticon: run
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  15. #45
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Sicher? eigentlich müsste es bei N<0 genauso funktionieren.
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

Seite 3 von 10 ErsteErste 1234567 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •