Sie sind auf Seite 1von 84

252-0027

Einfhrung in die Programmierung

3.0 Arrays (Reihen)


Thomas R. Gross

Department Informa?k
ETH Zrich
252-0027
Einfhrung in die Programmierung

2.7 Methoden mit Rckgabewerten


3.0 Arrays (Reihen)
Thomas R. Gross

Department Informa?k
ETH Zrich
Ergebnis Rckgabe
! Parameter erlauben Kommunika9on vom Aufrufer zur
aufgerufenen Methode
! Bisher waren die Methoden sehr einfach und druckten Text
! Methoden knnen aber mehr
! Ein Rckgabewert (return value) erlaubt der aufgerufenen
Methode dem Aufrufer einen Wert zu bermiIeln

3
4
Rckgabe eines Wertes
! Ein Rckgabewert muss deklariert werden
public static type name(parameters) {
statements;
...
return expression;
}

! Es gelten die selben Regeln fr type wie bei der Deklara9on


von Variablen und Parametern
! void: kein Rckgabewert
6
Rckgabe Anweisung
! Das return Statement (Rckgabe Anweisung) wertet
einen Ausdruck aus .
! Der Wert wird dann an den Aufrufer zurckgegeben
! Der Ausdruck muss einen Wert des Typs type (der
Methoden Deklara9on) ergeben.
! Die Ausfhrung der return Anweisung beendet die
aufgerufene Methode.
Rckgabeanweisung (return)
! return: Liefere einen Wert ab als das Ergebnis dieser Methode
! sende das Ergebnis zum Aufrufer
! Das Gegenstck zu Parametern:
! Parameters schicken Werte in die aufgerufene Methode, vom
Aufrufer
! Rckgabewerte schicken Werte aus der Methode zum Aufrufer
! Ein Methodenaufruf kann Teil eines Ausdrucks sein.
Rckgabeanweisung (return)

-42 abs(-42)

42
main
2.71

3
round(2.71)
Rckgabe eines Wertes
Beispiel:
// Returns the slope of the line between the given points.
public static double slope(int x1, int y1, int x2, int y2) {
double dy = y2 - y1;
double dx = x2 - x1;
return dy / dx;
}

slope(1, 3, 5, 11) liefert 2.0


return ohne einen Wert
Wenn eine Methode keinen Wert zurck liefert dann braucht ein
return Statement keinen Wert zu schicken.
.
public static void printPoint(int x, int y) {
System.out.println(x = + x + y = + y) ;
return;
}

In dem Fall kann man das return Statement auch weglassen


(meine Empfehlung)
Weitere Beispiele
// Converts degrees Fahrenheit to Celsius.
public static double fToC(double degreesF) {
double degreesC = 5.0 / 9.0 * (degreesF - 32);
return degreesC;
}

// Computes triangle hypotenuse length given its side lengths.


public static double hypotenuse(int a, int b) {
double c = squareRoot(a * a + b * b);
return c;
}
Weitere Beispiele
Ein return Statement kann auch einen (arithme9schen oder
booleschen) Ausdruck verwenden
public static double fToC(double degreesF) {
return 5.0 / 9.0 * (degreesF - 32);
}
Beispiel (vom Dienstag, 10. Okt)
! Schreiben Sie eine Methode printPrimes die alle
Primzahlen bis zur Obergrenze max (Benutzereingabe) ausgibt.
! Beispiel: printPrimes mit Eingabe 50 ergibt:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47

! Wenn max < 2, gebe nichts aus.

!Eine Primzahl p kann in genau zwei Faktoren zerlegt werden: p


und 1
// Prints all prime numbers up to the given max.
public static void main (String[] args){
Scanner console = new Scanner(System.in);

System.out.print("Input max: ");


int max = console.nextInt();

if (max >= 2) {
System.out.print("2");
for (int i = 3; i <= max; i++) {
if (isPrime(i)) {
System.out.print(", " + i);
}
}
System.out.println();
}
}

Beispiellsung
// Returns true if arg is prime Beispiellsung
public static boolean isPrime (int arg){
// Determine number of factors for arg
boolean found = false;
int step = 2;

while (!found) {
if (arg % step == 0) {
found = true; // another factor found
}
else { step++ ; // keep on searching
}
}
// other factor == arg: prime found
return (step == arg);
}
Mgliche Fehler: Resultat nicht gespeichert
! Ein return Statement schickt einen Wert an den Aufrufer
! Namen, die in der aufgerufenen Methode verwendet werden,
sind belanglos (fr den Aufrufer)
Was ist hier nicht rich9g?
public static void main(String[] args) {
slope(0, 0, 6, 3);
System.out.println("The slope is " + result); // ERROR:
} // result not defined

public static double slope(int x1, int x2, int y1, int y2) {
double dy = y2 - y1;
double dx = x2 - x1;
double result = dy / dx;
return result;
}
Den Fehler vermeiden
! return schickt den Wert der Variable zurck zum Aufrufer.
! Der zurckgegebene Wert muss gespeichert werden oder in einem
Ausdruck verwendet werden.
! Der Compiler generiert keine Warnung oder Fehlermeldung
wenn dies vergessen wird.
Den Fehler vermeiden
public static void main(String[] args) {
double s = slope(0, 0, 6, 3);
System.out.println("The slope is " + s);
}

public static double slope(int x1, int x2, int y1, int
y2) {
double dy = y2 - y1;
double dx = x2 - x1;
double result = dy / dx;
return result;
}
return Anweisungen
! Eine Methode kann mehrere return Anweisungen
enthalten.
! Sinnvoll fr Fallunterscheidungen
! Eine Methode die einen Rckgabewert deklariert muss eine
(oder mehrere) return Anweisung(en) enthalten

21
if/else mit return
// Returns the larger of the two given integers.
public static int max(int a, int b) {
if (a > b) {
return a;
} else {
return b;
}
}

! Methoden knnen ein return Statement in durch if/else


kontrollierten Blcken enthalten
! Das return am Ende eines Pfades liefert den Rckgabewert fr diese
Methode.
23
if/else mit return
! Die Ausfhrung eines return Statements beendet die
aufgerufene Methode.
! Einem return sollten keine weiteren Anweisungen folgen
! Alle Pfade durch eine Methode mssen ein return
Statement enthalten
! Wenn die Methode einen Rckgabewert deklariert hat
Alle Pfade
public static int max(int a, int b) {
if (a > b) {
return a;
}
// Error: not all paths return a value
}
! Der Compiler ist manchmal naiv:
public static int max(int a, int b) {
if (a > b) {
return a;
} else if (b >= a) {
return b;
}
}
Der Compiler meint dass es einen Pfad ohne return gibt.
26
27
if/else, return Beispiel
! Schreiben Sie eine Methode quadrant die fr ein Paar von
reellen Zahlen den Quadranten (als int Wert) liefert in dem
dieser Punkt liegt. y+

quadrant 2 quadrant 1

x- x+

quadrant 3 quadrant 4

y-

! Bespiel: quadrant(-4.2, 17.3) liefert 2


! Fllt der Punkt auf eine der Achsen des Koordinatensystems liefere 0.
if/else, return Beispiellsung
public static int quadrant(double x, double y) {
if (x > 0 && y > 0) {
return 1;
} else if (x < 0 && y > 0) {
return 2;
} else if (x < 0 && y < 0) {
return 3;
} else if (x > 0 && y < 0) {
return 4;
} else { // at least one coordinate equals 0
return 0;
}
}
if/else, return weitere Beispiele
! Schreiben Sie eine Methode countFactors die die Anzahl
der Faktoren (Teiler) einer Zahl liefert.
! countFactors(24) liefert 8 da
1, 2, 3, 4, 6, 8, 12, und 24 alle Teiler von 24 sind.
if/else, return weitere Beispiele
! Lsung:
// Returns how many factors the given number has.
public static int countFactors(int number) {
int count = 0;
for (int i = 1; i <= number; i++) {
if (number % i == 0) {
count++; // i is a factor of number
}
}
return count;
}
Interessante(re) Programme
! Java Bibliotheken nehmen Arbeit ab
! Beispiele (bisher)
! Scanner
! Window

32
String Literals
! String: Eine Folge von Buchstaben
! Nur eine Zeile, ggf. mit Ersatzdarstellungen
! Knnen auch einen Namen bekommen.

String name = "text";


String name = expression;
! Beispiele:
String name = Robin Williams";
String label= Robin\nWilliams";
int x = 3;
int y = 5;
String point = "(" + x + ", " + y + ")";
Stringparameter
public class StringParameters {
public static void main(String[] args) {
sayHello(Mark");

String friend = Peter";


sayHello(friend);
}

public static void sayHello(String name) {


System.out.println("Welcome, " + name);
}
}
Stringparameter
public class StringParameters {
public static void main(String[] args) {
sayHello(Mark");
Output:
String friend = Peter"; Welcome, Mark
sayHello(friend);
Welcome, Peter
}

public static void sayHello(String name) {


System.out.println("Welcome, " + name);
}
}
Strings
! Strings erlauben Zugri auf die Buchstaben die den Text
ausmachen.
! Weil Strings wich9g sind werden sie vom Compiler besonders
behandelt
! Wir haIen schon bei int und double gesehen dass prak9sche
Ueberlegungen die Programmierer zwingen, sich um Details zu
kmmern
! Auch Strings erfahren eine Sonderbehandlung
Elemente eines Strings
! Auf die einzelnen Buchstaben eines Strings wird mit einen
Index zugegrien (Basis 0) :
String name = B. Dylan";

index 0 1 2 3 4 5 6 7
character B . D y l a n

! Index des ersten Buchstaben: 0


! Index des letzten Buchstabens: 1 weniger als die Lnge des Strings
! Die einzelnen Buchstaben sind Werte des (Basis) char (spter mehr)
! Strings sind keine Arrays (Reihen).
Strings
! Zugri auf Elemente eines Strings erfolgt mit (vordenierten)
Methoden
! Aufruf dieser Methoden in Punktnota9on (Dot Nota9on) (dot
nota9on)
String s = hello;
s.method(parameterValues);
! Fhre Methode method fr s aus, wende method auf s an,
rufe method fr s auf

38
String Methoden
Method name Description
indexOf(str) index where the start of the given string
appears in this string (-1 if not found)
length() number of characters in this string
substring(index1, index2) the characters in this string from index1
or (inclusive) to index2 (exclusive);
substring(index1) if index2 is omitted, grabs till end of string
toLowerCase() a new string with all lowercase letters
toUpperCase() a new string with all uppercase letters

! Beispiel
String writer = S. Beckett";
System.out.println(writer.length()); // 10
String weitere Beispiele
// index 0123456789012
String s1 = "Alice Munro";
String s2 = "Doris Lessing";
System.out.println(s1.length()); // 11
System.out.println(s1.indexOf("e")); // 4
System.out.println(s2.substring(6, 9)); // Les"

String s3 = s2.substring(1, 7);


System.out.println(s3.toLowerCase()); // oris l

!Mit diesem String


// index 012345678901234567890123456789012
String class = Einfuehrung in die Programmierung";
Wie wrden Sie das Wort die extrahieren ?
String Literale
! Methoden wie substring und toLowerCase konstruieren und
liefern einen neuen String zurck, sie modizieren nicht den String
fr den sie aufgerufen wurden.
String s = Hello World";
s.toUpperCase();
System.out.println(s); // Hello World
! Um den Wert zu verndern muss dieser wieder einer Variablen
zugewiesen werden:
String s = "Hello World";
s = s.toUpperCase();
System.out.println(s); // HELLO WORLD
String test methods
Method Description
equals(str) whether two strings contain the same characters
equalsIgnoreCase(str whether two strings contain the same characters,
) ignoring upper vs. lower case
startsWith(str) whether one contains other's characters at start
endsWith(str) whether one contains other's characters at end
contains(str) whether the given string is found within this one

String name = console.next();


if (name.contains("Prof")) {
System.out.println("When are your office hours?");
} else if (name.equalsIgnoreCase("STUART")) {
System.out.println("Let's talk about meta!");
}
Scanner Methoden
Method Description
nextInt() reads an int from the user and returns it
nextDouble() reads a double from the user
next() reads a one-word String from the user
nextLine() reads a one-line String from the user
! Jede Methode wartet bis der Benutzer die Eingabe mit der
"ENTER" (oder "RETURN") Taste abschliesst.
! Der eingegebene Wert kann weiter verarbeitet werden.
System.out.print("Wie alt sind Sie? "); // prompt
int alter = console.nextInt();
System.out.println("Ihre Eingabe " + alter);
! "prompt" (Auorderung): Text der angibt welche Eingabe erwartet wird.
Strings as user input
!Scanner's next Methode liest ein Wort als String.
Scanner console = new Scanner(System.in);
System.out.print("What is your name? ");
String name = console.next();
name = name.toUpperCase();
System.out.println(name
+ " has "
+ name.length()
+ " letters and starts with "
+ name.substring(0, 1));

Output:
What is your name? Chamillionaire
CHAMILLIONAIRE has 14 letters and starts with C
Strings as user input

!Die Methode nextLine liest eine Zeile als String.


System.out.print("What is your address? ");
String address = console.nextLine();
Methoden in Math

46
Die Java Math Klasse
Method name Description
Math.abs(value) absolute value
Math.ceil(value) rounds up
Math.floor(value) rounds down
Math.log10(value) logarithm, base 10
Math.max(value1, value2) larger of two values
Math.min(value1, value2) smaller of two values
Math.pow(base, exp) base to the exp power
Math.random() random double between 0 and 1
Math.round(value) nearest whole number
Math.sqrt(value) square root
Math.sin(value) sine/cosine/tangent of
Math.cos(value) an angle in radians Constant Description
Math.tan(value) Math.E 2.7182818...
Math.toDegrees(value) convert degrees to Math.PI 3.1415926...
Math.toRadians(value) radians and back
Aufruf von Math Methoden
Math.methodName(parameters)

! Beispiele:
double squareRoot = Math.sqrt(121.0);
System.out.println(squareRoot); // 11.0

int absoluteValue = Math.abs(-50);


System.out.println(absoluteValue); // 50

System.out.println(Math.min(3, 7) + 2); // 5
Math Fragen
! Was ist das Ergebnis dieser Ausdrcke:
! Math.abs(-1.23)
! Math.pow(3, 2)
! Math.pow(10, -2)
! Math.sqrt(121.0) - Math.sqrt(256.0)
! Math.round(Math.PI) + Math.round(Math.E)
! Math.ceil(6.022) + Math.floor(15.9994)
! Math.abs(Math.min(-3, -5))
Besonderheiten von Math Methoden
! Nicht alle Math Methoden lieferen einen int Wert den wir
erwarten (knnten), manche z.B. liefern einen double Wert.
int x = Math.pow(10, 3); // ERROR: incompat. types

! Andere Aspekte der reellen Zahlen und des Typs double


werden wir spter kennen lernen
Die Java Random Klasse
random {adj}
zufllig
willkrlich [wahllos]
zufallsbedingt
Zufalls-
dem Zufall berlassen

(aus E-D Wrterbuch)


51
Die Java Random Klasse
!Die Random Klasse liefert uns einen Zufallszahlengenerator
! Pseudozufallszahlen.
! Klasse Random ist auch in java.util.
import java.util.*;

Method name Description


nextInt() returns a random integer
nextInt(max) returns a random integer in the range [0, max)
in other words, 0 to max-1 inclusive
nextDouble() returns a random real number in the range [0.0, 1.0)
Die Java Random Klasse
Method name Description
nextInt() returns a random integer
nextInt(max) returns a random integer in the range [0, max)
in other words, 0 to max-1 inclusive
nextDouble() returns a random real number in the range [0.0, 1.0)

! Beispiel:
import java.util.*;

Random rand = new Random();


int randomNumber = rand.nextInt(10); // 0-9
Erzeugen von Zufallszahlen
!Hug brauchen wir (ganze) Zufallszahlen zwischen 1 und N

int n = rand.nextInt(20) + 1; // 1-20 inclusive


!Um eine ganze Zahl in irgendeinem Interval [min, max] zu
bekommen (inklusiv Grenzen):
name.nextInt(size of range) + min
mit (size of range) gleich (max - min + 1)

! Beispiel: Eine zufllige ganze Zahl zwischen 4 und 10 einschliesslich:


int n = rand.nextInt(7) + 4;
Fragen zu Random
Mit dieser Deklara9on, wie wrden Sie erhalten:
Random rand = new Random();
! Eine zufllige ganze Zahl zwischen 1 und 47 einschliesslich?
int random1 = rand.nextInt(47) + 1;

! Eine zufllige ganze Zahl zwischen 23 und 30 einschliesslich?


int random2 = rand.nextInt(8) + 23;

! Eine zufllige ganze gerade Zahl zwischen 4 and 12 einschliesslich?


int random3 = rand.nextInt(5) * 2 + 4;
Random und andere Basistypen
!Die Methode nextDouble liefert eine reelle Zahl (double)
zwischen 0.0 und 1.0

! Beispiel: eine zufllige Note zwischen 1.0 and 6.0:


double randomGrade = rand.nextDouble() * 5.0 + 1.0;

!Jede Menge von Werten kann auf die ganzen Zahlen abgebildet
werden
Random und andere Basistypen
!Jede Menge von Werten kann auf die ganzen Zahlen abgebildet
werden
! Code um zufllig Schere-Stein-Papier zu spielen:
int r = rand.nextInt(3);
if (r == 0) {
System.out.println("Schere");
} else if (r == 1) {
System.out.println("Stein");
} else { // r == 2
System.out.println("Papier");
}
Frage zu Random
!Schreiben Sie ein Programm um das Rollen zweier Wrfel (mit
je 6 Seiten) zu simulieren bis die Summe der Wrfel 7 ergibt.
2 + 4 = 6
3 + 5 = 8
5 + 6 = 11
1 + 1 = 2
4 + 3 = 7
Sie haben nach 5 Versuchen gewonnen!
Lsung
// Rolls two dice until a sum of 7 is reached.
import java.util.*;

public class Dice {


public static void main(String[] args) {
Random rand = new Random();
int tries = 0;

int sum = 0;
while (sum != 7) {
// roll the dice once
int roll1 = rand.nextInt(6) + 1;
int roll2 = rand.nextInt(6) + 1;
sum = roll1 + roll2;
System.out.println(roll1 + " + " + roll2 + " = " + sum);
tries++;
}

System.out.println("Sie haben nach " + tries + " Versuchen gewonnen!");


}
}
// Rolls two dice until a sum of 7 is reached.
import java.util.*;
do/while Lsung
public class Dice {
public static void main(String[] args) {
Random rand = new Random();
int tries = 0;
int sum;

do {
int roll1 = rand.nextInt(6) + 1; // one roll
int roll2 = rand.nextInt(6) + 1;
sum = roll1 + roll2;
System.out.println(roll1 + " + " + roll2 + " = " + sum);
tries++;
} while (sum != 7);

System.out.println("Sie haben nach " + tries + " Versuchen


gewonnen!"); }
}
252-0027
Einfhrung in die Programmierung

3.0 Arrays (Reihen)


Thomas R. Gross

Department Informa?k
ETH Zrich
Reihen (Arrays)

Based on Sldies by Reges et al. Copyright (c) Pearson 2013.


All rights reserved.
Ein neues Problem
Ein Programm das den Kurs einer Ak9e (am Ende eines Tages)
erfragt und dann den DurchschniI und den mglichen Verlust/
Gewinn berechnet
! Input unterstrichen
! Mglicher Gewinn/Verlust: Tage in der Berichtperiode? 5
Dierenz zu Endkurs Kurs Ende Tag 1: 102
Kurs Ende Tag 2: 98
Kurs Ende Tag 3: 92
Kurs Ende Tag 4: 104
Kurs Ende Tag 5: 98
Durchschnittskurs = 98.8
Ein neues Problem
Ein Programm das den Kurs einer Ak9e (am Ende eines Tages)
erfragt und dann den DurchschniI und den mglichen Verlust/
Gewinn berechnet
! Input unterstrichen
! Mglicher Gewinn/Verlust: Durchschnittskurs = 98.8
Dierenz zu Endkurs Moeglicher G/V Tag 1: -4
Moeglicher G/V Tag 2: 0
Moeglicher G/V Tag 3: 6
Moeglicher G/V Tag 4: -6
Moeglicher G/V Tag 5: 0
Was ist unangenehm
! Jeder Wert muss zweimal eingegeben werden:
! Um den DurchschniI zu berechnen (Summe dividiert durch Anzahl Tage)
! Um den mglichen Gewinn/Verlust zu berechnen

! Knnten natrlich jeden Wert in einer Variable speichern aber :


! Wir wissen nicht mit wievielen Tagen wir arbeiten bis das Programm
ausgefhrt wird
! Wir wissen nicht wieviele Variable wir brauchen
! Wir brauchen einen Weg, mehrere Variable auf einmal zu deklarieren
"Arrays" (Reihen)
!Ein Array erlaubt uns, mehrere Werte des selben Typs zu
speichern.
! Element: Ein Wert in einem Array.
! Index: Zahl (>= 0) um ein Element eines Arrays auszuwhlen
! Base: Das erste Element hat den Index 0

Index 0 1 2 3 4 5 6 7 8 9
Wert 12 49 -2 26 5 17 -6 84 72 3

Element 0 Element 4 Element 9


Array Deklara9on Syntax
type[] name = new type[length];

! Beispiel:
int[] numbers = new int[10];

Index 0 1 2 3 4 5 6 7 8 9
Wert 0 0 0 0 0 0 0 0 0 0
68
69
Array Deklara9on Syntax, Fortsetzung
! Die Lnge length kann ein beliebiger int Ausdruck sein.

int x = 2 * 3 + 1;
int[] data = new int[x % 5 + 2];
! Jedes Element wird auf einen Wert der Null "entspricht" gesetzt
! Voreinstellung ("default") Type Default Wert
int 0
double 0.0
boolean false
String null
Zugri auf Elemente
name[index] // Lesen
name[index] = value; // Modifikation
Beispiel:
numbers[0] = 27;
numbers[3] = -6;

System.out.println(numbers[0]);

Index
index 0 1 2 3 4 5 6 7 8 9
Wert 27
value 0 0 0 -6
0 0 0 0 0 0 0
Felder fr andere Typen
double[] results = new double[5];
results[2] = 3.4;
results[4] = -0.5;
Index 0 1 2 3 4
Wert 0.0 0.0 3.4 0.0 -0.5

String[] address = new String[6];


address[3] = Florastrasse 6;
Index 0 1 2 3 4 5
Wert null null null Florastrasse 6 null null
Legale Index Werte
Legale Index Werte: zwischen 0 und (Lnge des Arrays - 1).
! Einschliesslich
! Lesen oder Schreiben (Zugri, access) mit einem Index ausserhalb
dieses Bereichs resul9ert in einer
ArrayIndexOutOfBoundsException.
! Out-of-bounds Fehler

Index 0 1 2 3 4 5 6 7 8 9
Wert 0 0 0 0 0 0 0 0 0 0
Out-of-bounds Zugrie
!Example:
int[] data = new int[10];
System.out.println(data[0]); // okay
System.out.println(data[9]); // okay
System.out.println(data[-1]); // exception
System.out.println(data[10]); // exception

Index 0 1 2 3 4 5 6 7 8 9
Wert 0 0 0 0 0 0 0 0 0 0
75
Arrays und Zugrie auf Elemente
int[] numbers = new int[8];
numbers[1] = 3;
numbers[4] = 99;
numbers[6] = 2;

int x = numbers[1];
numbers[x] = 42;
numbers[numbers[6]] = 11; // use numbers[6] as index

x 3

Index 0 1 2 3 4 5 6 7

numbers Wert 0 3 11 42 99 0 2 0
Arrays und for Schleifen
!Oy wird auf Arrayelemente in einer for Schleife zugegrien
for (int i = 0; i < 8; i++) {
System.out.print(numbers[i] + " ");
}
System.out.println(); // output: 0 3 11 42 99 0 2 0

!Eine Schleife eignet sich auch zur Zuweisung an jedes Element


eines Arrays.
for (int i = 0; i < 8; i++) { Index 0 1 2 3 4 5 6 7
numbers[i] = 2 * i;
Wert 0 2 4 6 8 10 12 14
}
Das length AIribut
Das length AIribut eines Arrays name liefert die Anzahl der
Elemente.
name.length

for (int i = 0; i < numbers.length; i++) {


System.out.print(numbers[i] + " ");
}
// output: 0 2 4 6 8 10 12 14
Das length AIribut
!Das length AIribut eines Arrays name liefert die Anzahl der
Elemente.
name.length

!Was fr ein Ausdruck erlaubt den Zugri auf:


! Das letzte Element eines Arrays?
! Das Element in der MiIe?
Unser Beispiel am Anfang (Kurse von Ak9en)
Ein Array hily uns, dieses Programm zu schreiben
Tage in der Berichtperiode? 5
Kurs Ende Tag 1: 102
Kurs Ende Tag 2: 98
Kurs Ende Tag 3: 92
Kurs Ende Tag 4: 104
Kurs Ende Tag 5: 98
Durchschnittskurs = 98.8
Moeglicher G/V Tag 1: -4
Moeglicher G/V Tag 2: 0
Moeglicher G/V Tag 3: 6
Moeglicher G/V Tag 4: -6
Moeglicher G/V Tag 5: 0
Programm
// Liest Kurse, berechnet Durchschnitt, gibt moeglichen Gewinn/Verlust auf
// Ende Periode aus
import java.util.*;

public class GewinnVerlust{


public static void main(String[] args) {
Scanner console = new Scanner(System.in);
System.out.print("Tage in der Berichtperiode? ");
int days = console.nextInt();

int[] quotes = new int[days]; // array fuer Aktienkurse Ende Tages


int sum = 0;
Programm, Fortsetzung
for (int i = 0; i < days; i++) { // Eingabe/speichern Tageskurs
System.out.print("Kurs Ende Tag " + (i + 1) + ": ");
quotes[i] = console.nextInt();
sum = sum + quotes[i];
}
double average = (double) sum / days;

// report results
System.out.println("Durchschnittskurs = + average);
for (int i = 0; i < days; i++) {
System.out.print("Moeglicher G/V Tag " + (i + 1) + " : ");
System.out.println( quotes[ quotes.length - 1] - quotes[i]);
}
}
}
Greek
!
!
!

83
84