Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
--- Praktische Informatik (http://www.informatikerboard.de/board/board.php?boardid=6)
---- Algorithmen (http://www.informatikerboard.de/board/board.php?boardid=17)
----- Algorithmus BlueJ (http://www.informatikerboard.de/board/thread.php?threadid=2253)


Geschrieben von Denise am 03.05.2015 um 13:20:

  Algorithmus BlueJ

Meine Frage:
Hallo smile

Es geht um eine Klasse Noten, die die Noten der Schüler anzeigt (mithilfe eines Felds). Mit einer Methode soll die beste Note angegeben werden
(in blueJ). Es war angegeben, dass es nur drei Noten gibt.


Meine Ideen:
Ich habe die Klasse schon erstellt:
public class Noten
{
private int [] notenliste;

public Noten(int elemente)
{
notenliste = new int [elemente];
}


public void einfuegen(int index, int note)
{
notenliste[index-1] = note;
}

public void ausgebenAlle(){
for (int i = 0; i < notenliste.length; i++){
System.out.println ("Schüler "+(i+1)+": "+notenliste[i]);
}
}

public void besteNote (){
int besteNote = notenliste [0];
for (int i=0; i < notenliste.length; i++) {
if ( besteNote > notenliste [1]) {
besteNote = notenliste [1];
}
if (besteNote > notenliste [2]) {
besteNote = notenliste [2]; }
}

System.out.println("Beste Note:" + besteNote);

}
}

Jetzt sollen wir die letzte Methode (besteNote) allgemein mit dem Index umschreiben, sodass man nicht mehr nur auf drei Noten begrenzt ist. Wie geht das? :/ habe schon Folgendes versucht:
public void besteNote (){
int besteNote= notenliste [0];

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

while ( notenliste[i] > notenliste [i+1]) {
besteNote = notenliste [i+1];
}


System.out.println("Beste Note:" + besteNote);

}
}}

Wenn ich compile, zeigt er mir keinen Fehler an, aber wenn ich ein Objekt erstellen will und dann auf die Methode zugreifen möchte, funktioniert das nicht mehr.

Kann mir jemand helfen?



Geschrieben von eulerscheZahl am 03.05.2015 um 17:24:

 

while (notenliste[i] > notenliste[i + 1])
Wenn das erfüllt ist, landest du in einer Endlosschleife.
Und die beste Note gibst du bei jedem Schleifendurchlauf aus.
Außerdem wirst du auf notenliste[notenliste.Length] zugreifen, wenn du nicht in der Endlosschleife hängen bleibst, das gibt eine Exception.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
public void besteNote() {
	int besteNote = notenliste[0];
	for (int i = 1; i < notenliste.length; i++) {
		while (notenliste[i] < besteNote) {
			besteNote = notenliste[i];
		}
	}
	System.out.println("Beste Note:" + besteNote);
}

so funktioniert es. Ich würde aber ein int zurückgeben und die Ausgabe mit System.out in der aufrufenden Funktion erfolgen lassen.



Geschrieben von Denise am 03.05.2015 um 20:33:

 

Okay, dankeschön smile


Forensoftware: Burning Board, entwickelt von WoltLab GmbH