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!

Javakurs2006/Uebungsaufgaben

Variablen

Variablendeklaration und Initialisierung

class Beispiel {
	public static void main(String [] ignored) {
		int aWholeNumber;
		double notAWholeNumber;
		String aString;

		aWholeNumber = 0;
		notAWholeNumber = 0.0;
		aString = "";
		System.out.println(aWholeNumber);
		System.out.println(notAWholeNumber);
		System.out.println(aString);

		int anotherWholeNumber = 0;
		double anotherNotSoWholeNumber = 0;
		String anotherString = "";
		System.out.println(anotherWholeNumber);
		System.out.println(anotherNotSoWholeNumber);
		System.out.println(anotherString);
	}
}

  • An welcher Stelle im Programm wird die Variable aWholeNumber definiert?
  • An welcher Stelle im Programm wird die Variable aWholeNumber initialisiert?

Beantworte diese Fragen auch für die Variablen: notAWholeNumber, aString, anotherWholeNumber, anotherNotSoWholeNumber, anotherString

Erkläre deine Meinung einem Tutor.

Selber Deklarationen und Definitionen durchführen

class Beispiel {
	public static void main(String [] ignored) {
		// deklariere eine Variable "birnen"  vom Typ int
		
		// weise ihr den Wert drei zu

//		System.out.println("3 erwartet: " + birnen);
		// addiere fünf zu dem Wert

//		System.out.println("7 erwartet: " + birnen);
		// deklariere eine Variable "aepfel" und weise ihr den Wert fünf zu

//		System.out.println("5 erwartet: " + aepfel);
		// subtrahiere zwei von dem Wert

//		System.out.println("3 erwartet: " + aepfel);

		
	}
}


Zuweisung an Variablen

class Beispiel {
	public static void main(String [] ignored) {
		System.out.println(0);
		int zero = 0;
		System.out.println(zero);
		int one = 1;
		int whatsThis = zero;
		System.out.println(whatsThis);
		whatsThis = one;
		System.out.println(whatsThis);
	}
}

Überlege dir was dieses Code-Fragment ausgeben würde. Führe es aus und vergleiche die Resultate. (Kopiere

  • Was sind die Unterschiede?
  • Warum?

Erkläre einem Tutor zu welchem Schluss du gekommen bist und frage ihn ob du Recht hast.

Variablen ändern ihre Werte

class Test {
	public static void main(String [] ignored) {
		int number = 1;
		System.out.println(number);
		number = 1;
		System.out.println(number);
		number = 2;
		System.out.println(number);
		number = 3;
		System.out.println(number);
		number = 1;
		System.out.println(number);
		number = 17;
		System.out.println(number);
	}
}

Überlege dir was dieser Code ausgeben würde. Schreibe ihn in eine Datei, kompiliere ihn und führe ihn aus.

  • Was gibt er tatsächlich aus?
  • Gibt es unterschiede?

Formatierung

Wieso haben wir das Beispiel nach den geschweiften Klammern eingerückt und die Variablen so gestellt wie wir es gestellt haben und nicht so:

class _{static long _
(long __,long  ___) {
return __==0 ?___+ 1:
___==0?_(__-1,1):_(__
-1,_(__, ___-1)) ;  }
static  {int _=2 ,___
= 2;System.out.print(
"a("+_+’,’+___+ ")="+
_ (_,  ___) ) ;System
.exit(1);}}//(C) Ulli

Nenne mindestens einen Grund und erkläre ihn deinem Tutor.

Etwas weniger Extrem, wieso haben wir unser zweites Beispiel nicht so gestellt?

class Beispiel {public static void main
	(String [] ignored) {
	System.out.println(0); int zero = 0;
			System.out.println(zero);
		int one = 1;
		int whatsThis = zero;
			System.out.
		println(whatsThis);
	whatsThis = one;		System.out.println(whatsThis)
;}}

Nenne mindestens einen Grund und erkläre ihn deinem Tutor.

Wieso haben wir unser zweites Beispiel nicht so gestellt?

class b {
	public static void main(String [] i) {
		System.out.println(0);
		int a = 0;
		System.out.println(a);
		int b = 1;
		int c = a;
		System.out.println(c);
		c = b;
		System.out.println(c);
	}
}

Nenne mindestens einen Grund und erkläre ihn deinem Tutor.

Variablen mit verschiedenen Typen zuweisen

class Test {
	public static void main(String [] ignored) {
		
	}
}

If

1.

public class If_Uebung1 {
    /* Eure Aufgabe:
     * Versucht nachzuvollziehen, was dieses Programm macht 
     * und schaut Euch den Code an.
     */

    public static void main(String[] args) {

        /* 
         * wir erzeugen uns hier eine Zufallszahl im
         * Bereich 1-6. Warum funktioniert das so?
         * Math.random ist eine statische Funktion im 
         * Math-Paket, dass und eine double-Zahl, die kleiner
         * als 1.0 aber groesser oder gleich 0 ist.
         * Mit 6 multipliziert und um eins erhöht erhalten wir
         * Zahlen von 1.0 bis 6.99999...
         * Durch das Umwandeln in int werden die Nachkommastellen abgeschnitten
         * und wir erhalten ein int von 1 bis 6.
         */
        int wuerfelzahl = (int) (1 + (6 * Math.random()));

        /*
         * Zur Kontrolle geben wir das Ergebnis aus 
         */
        System.out.println("Der Würfel hat " + wuerfelzahl + " ergeben.");

        /*
         * Ist das Ergebnis groesser als 3 ?
         */
        if (wuerfelzahl > 3) {
            // Wenn ja gib diesen Text aus:
            System.out.println("mehr als 3!");
        }

    }

}
 

2.

public class If_Uebung2 {

    /*
     * Eure Aufgabe:
     * Schaut Euch das Programm an und überlegt, was fuer verschiedene
     * Werte passiert. 
     * Welche If-Abfragen sind unnötig, weil man die Ausgaben in else-Zweige von 
     * bereits vorhandenen schreiben könnte?
     */
    
    public static void main(String[] args) {
        
        int wert;
        
        wert = 5;
        
        if (wert<5){
            System.out.println("Der Wert ist echt kleiner 5.");
        }
        
        if (wert>5){
            System.out.println("Der Wert ist echt groesser 5.");
        }
        
        if (wert==5){
            System.out.println("Der Wert ist gleich 5");
        }
        
        if (wert>=5){
            System.out.println("Der Wert ist groesser oder gleich 5");
        }
        
        if (wert<=5){
            System.out.println("Der Wert ist kleiner oder gleich 5");
        }
        
    }

}
 


For

1.

public class For_Uebung1 {
    /*
     * Eure Aufgabe:
     *  Schaut Euch dieses Programm an und überlegt, welche Zahlen
     *  es ausgeben wird. 
     *  Anschliessend kompiliert das Programm, führt es aus und überprüft
     *  Eure Vermutungen.
     *  
     */

    public static void main(String[] args) {

        System.out.println("erste for Schleife:");
        for (int i = 1; i <= 10; i = i + 1) {
            System.out.print(" " + i);
        }
        System.out.println(); // Zeilenumbruch

        System.out.println("zweite for Schleife:");
        for (int i = 1; i <= 10; i = i + 2) {
            System.out.print(" " + i);
        }
        System.out.println(); // Zeilenumbruch

        System.out.println("dritte for Schleife:");
        for (int i = 1; i <= 10; i = i * 2) {
            System.out.print(" " + i);
        }
        System.out.println(); // Zeilenumbruch

    }

}
 

2.

public class ForIf_Uebung {
    
    // Welche Zahlen gibt dieses Programm aus ?
    
    public static void main(String[] args) {
        for (int i=1;i<10;i++){
            if ((i % 2)==0){ // % ist der Modulo-Operator 
                System.out.println("Die Zahl "+i+" ist gerade.");
            }
        }
    }
}