2 Programmfragmente Funktionsweise

steffenw

Mitglied
Hallo,

1. Code:
Java:
public class test2 {

    public static void main(String[] args) {
        String a1 = "1";
        byte   a2 = 2;
        int    a3 = ++a2;

        System.out.println(a1 + a2 + a3);
    }

}

Laut eclipse soll hier 133 rauskommen. Wie kommt dieses Ergebnis zustande?

und noch eine Aufgabe:
Java:
public class test2 {

    public static void main(String[] args) {
        int ergebnis = 0;
        for(int i=1; i<=10; i++)
          switch(i){
           case 10: ergebnis -= 10;
           default: ergebnis += i/2;
          }
        System.out.println(ergebnis);
        }
       

    }
Hier soll 15 rauskommen. Wie kommt das zustande?

Danke im Voraus
 

Robat

Top Contributor
Mach doch einfach mal einen Schreibtischtest.. dann siehst du warum das heraus kommt.
Dir hier jetzt vorzukauen warum da was herauskommt bringt dir doch genau nichts.
 

JStein52

Top Contributor
wie ist denn der Inhalt der drei Variablen unmittelbar vor dem println ??
Und bei dieser Schleife musst du nur schrittweise durchgehen undbeachten dass i/2 eine Integerdivision ist,
d.h. das Ergebnis ist einfach der ganzzahlige Quotient 3/2 ist demnach 1
 

FourOhFour

Aktives Mitglied
Im ersten Falle einfach mal das Inkrement angucken... gibt einen Unterschied zwischen ++a und a++.
Im zweiten Beispiel verstehe ich nicht, was dir dort unklar sein könnte.
Im Notfall halt nochmal angucken wie Schleifen und Switches funktionieren.
 

steffenw

Mitglied
Nochmal zum 1. Beispiel:

bedeutet dass ++a2 das bereits bei a2 der wert erhöht wird?
Also erst die Ausgabe von 1 dann a2=3 wegen ++ und a3 dann auch 3 ergibt 133?

Und zum 2. Beispiel:
komme dann einfach nicht drauf.
ich versuch das hier mal durchzurechnen, ihr seht den Fehler bestimmt sofort :)

ergebnis=0
int i=1 //1. Durchlauf
0+1/2=0
int i=2 //2. Durchlauf
0+2/2=1
int i=3 //3. Durchlauf
1+3/2=2
int i=4 //4. Durchlauf
2+4/2=4
int i=5 //5. Durchlauf
4+5/2=6
int i=6 //6.Durchlauf
6+6/2=9
int i=7 //7. Durchlauf
9+7/2=12
int i=8 //8. Durchlauf
12+8/2=16
int i=9 //9. Durchlauf
16+9/2=20
int i=10 //10. Durchlauf case 10
20-10=10

komme also auf das Endergebnis 10, Eclipse gibt mir jedoch 15 aus.
 

Ähnliche Java Themen

Neue Themen


Oben