Java - nur gerade Zahlen ausgeben?

5 Antworten

if (startwert / 2 * 2 )) startwert) {

da es int ist kann es keine nachkommastelle haben.

zB startwert ist 9.

9 / 2 = 4 (4 geht 2 mal in die 9 rein)

4 * 2 = 8. Es ist nicht das gleiche Ergebnis also eine ungerade Zahl.

# # # # # # # # # # # # #

wenn es jetzt aber eine gerade zahl ist, zB 12:

12 / 2 = 6 (6 geht 2 mal in die 12 rein)

6 * 2 = 12. Es ist das gleiche Ergebnis also ist es eine gerade Zahl!

Kuck Dir mal an wie der folgende Code aussieht

http://pastebin.com/EjYAfr4W

Bis zur Schleife ist alles klar - nur Variablen deklarieren und/oder initialisieren, Dann beginnt auch schon die do-while-Schleife mit der Abbruchbedingung startwert < endwert. Jetzt folgt nur die Eingabe (die hast Du ja schon gehabt).

Jetzt folgt der Vergleich der Eingabe mit der entsprechenden Ausgabe. Liefert der Vergleich ein true ist die Abbruchbedingung der do-while-Schleife erfüllt und die Schleife wird verlassen. Am Ende kommt jetzt nur noch die Zählschleife mit dem Vergleich, ob i gerade ist und die Ausgabe wird ausgelöst

Mehr ist das nicht. Da wir i nur 1x brauchen, hab ich das gleich am Anfang mit deklariert, Sonst würde das auch in der Zählschleife passieren. Startwert % 2 kann nicht funktionieren, da Du in der Zählschleife das i hochzählst und die Abbruchbedingung für die fußgesteuerte Schleife niemals erreicht werden würde und sich der Wert der Variablen auch nicht ändert


setemba  14.12.2014, 19:41

Ich seh gerade, dass der Endwert noch gar nicht als gerade ausgegeben wird, wenn er gerade ist. Da muss es dann so geschrieben werden:

for ( i = startwert; i <= endwert ; i++ )
0

Hallo.

while (endwert <= startwert);

Was soll dort geschehen? Der Endwert wird wahrscheinlich immer höher sein wie der Startwert also wird die Bedingung immer falsch sein. Zudem fehlt der Rumpf der Schleife und die beiden Vergleichsvariablen ändern sich nie.

--

 for (int i = startwert; i <= endwert; i++)

Sieht schon besser aus. Aber auch hier fehlt der Rumpf.

If/Else ist zudem keine Schleife sondern eine Bedingung/Klausel.

if({Boolsches Ergebnis})
{
 // Hier Code wenn {Boolesches Erebnis} == true
}
else
{
 // Hier Code wenn {Boolesches Erebnis} == false
}

Glaube du sollst dir den Syntax von Schleifen/Klauseln nochmal genauer ansehen. Eine fertige Lösung gibt es von mir nicht :). Sicher von jemanden anderen aber.


Threat11 
Beitragsersteller
 14.12.2014, 13:55

Ich habe ja nur einen kleinen Teil kopiert, das ruft jetzt natürlich Missverständnisse hervor ;) das while stand im Kontrast zu einem "do". Ich kopiere dir mal alles:

import java.io.*;

class auflisten { public static void main (String[] args) throws IOException { BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in));

    int startwert;                              // Bezeichnung der Integer Variablen
    int endwert;
    
    System.out.println(" Auflisten von Zahlen, Auto: Christoph Bauch\n");
    
    do
    {
        System.out.println("Startwert:");               // Variable "startwert" und "endwert" werden durch Eingabe definiert
                                                                        
        startwert = Integer.parseInt(stdin.readLine());
        
        System.out.println("\nEndwert:");
        endwert = Integer.parseInt(stdin.readLine());
        
        if (startwert >= endwert)
            System.out.println("\nStartwert kann nicht größer/gleich Endwert sein!\n"); // Bedingung dafür, dass Endwert > Startwert
    }
    while (endwert <= startwert);
    
    System.out.println();
    
    for (int i = startwert; i <= endwert; i++)
        /* for-Schleife mit laufender Variable. wird innerhalb der for-Anweisung
           bestimmt. zu i wird 1 addiert, bis startwert und endwert gleich groß sind. */

               
           
    }

}

0
for (int i = startwert; i <= endwert; ++i) {
    System.out.println(((i % 2) == 0) ? (""+i) : "");
}

cort3x  14.12.2014, 21:48

Bei ungeraden Zahlen werden auch Zeilen ausgegeben hab ich gerade bemerkt :P

Es muss so sein

for (int i = startwert; i <= endwert; ++i) {
    System.out.print(((i % 2) == 0) ? (i+"\n") : "");
}
0

Wenn im else-Zweig der Verzweigung nichts gemacht werden soll, dann kannst Du ihn einfach leer lassen oder ganz weglassen.

Wie man etwas ausgibt, mit System.out.println(...), das weißt Du ja schon.