Algorithmus BlueJ

Neue Frage »

Auf diesen Beitrag antworten »
Denise 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?
 
Auf diesen Beitrag antworten »
eulerscheZahl

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.
Auf diesen Beitrag antworten »
Denise

Okay, dankeschön smile
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »