Mit BlueJ programmieren?
Hallo alle zusammen,
ich sitze gerade schon seit fast anderthalb Stunden an diesen drei Aufgaben und weiß einfach nicht weiter. Kann mir jemand helfen, der mit BlueJ Erfahrung hat?
Vielen Dank im Voraus.
Hier die Aufgaben:
/**Projekt: ReihungMax01_roh
* Klasse : Reihung
* @author: thh
* @version: 13.5.14/2.11.12
*/
public class Reihung {
// Objektvariablen deklarieren
int anzahl = 19;
double[] platz = new double[anzahl]; //Reihung deklarieren; wird 19 Kommazahlen
// als Werte erhalten;
/**
* Konstruktor fuer Objekte der Klasse Reihung */
public Reihung() {
// gesamte Reihung initialisieren, indem ...
for (int i = 0; i < anzahl; i++) { // alle Inhalte der Reihung festgelegt werden
platz[i] = 100 + 200*Math.random(); // <-- 5.
}
}
/** die Gesamtzahl der Elemente
* in der Reihe ausgeben */
public int gibAnzahl() {
return anzahl;
}
/** ein bestimmtes Element der Reihung ausgeben
* die Nr. des gewuenschten Elementes angeben */
public double gibPlatz(int i) {
if (i < anzahl && i >= 0) {
return platz[i];
}
else {
return -888.888;
}
}
/** Aufgabe 1:
* setzt fuer zwei Elemente der Reihung platz neue Werte fest.
* Das Element mit dem Index 5 in Reihung platz[ ] wird auf 555.55 gesetzt
* Das Element mit Index 9 auf der Wert 99.99 */
/** Aufgabe 1:
* setzt ein bestimmtes Element der Reihung platz[ ] auf einen
* neuen vorzugebenden Wert.
Schreibe nun für i den Index des Elements, welches verändert werden soll
und für wert den Wert der eingesetzt werden soll*/
/** Aufgabe 2:
* sucht das Maximum in der Reihung platz[ ]
* und meldet diesen Wert als Antwort */
/** Aufgabe 3:
* sucht den Index, an dem das Maximum in der Reihung platz[ ] steht
* und meldet diesen Index */
}
/*
* 2. Beschreibe deine Idee in Worten.
* Erstelle den Rumpf dieser Methode, die das Maximum in der Reihung
* platz sucht und als Antwort zurueckgibt.
* Achte auf die Farbunterlegung beim Schreiben neuer Methoden.
* Erkennst du im Quelltext die Idee/den Algorithmus wieder?
*
* 3. Entwirf und implementiere eine Methode, die den Index nennt,
* an dem das Maximum steht.
* Was ist der Unterschied zu Aufg.2?
*
* 4. ** platz[i] = 100 + 200*Math.random();
* Hierdurch werden Zahlen zwischen 100.0 und 299.99999 zufaellig erzeugt.
* Welche Werte koennen die Elemente der Reihung annehmen, wenn
* Z.18 lautet: platz[i] = 500*Math.random() + 200 ; ?
* *** Z.18 lautet: platz[i] = 13 + i*Math.random() + 20*i ; ?
* 5. Kopieren (auf Dateiebene ausserhalb von BlueJ) das gesamte
* Projekt-Verzeichnis und gib der Kopie einen neuen Namen wie ReihungMax02.
* Oeffne dieses Projekt und arbeite im neuen Projekt weiter.
*/
Kannst du mal rein stellen, was du bis jetzt hast?
Hi sorry mein PC war kaputt... Hat sich deswegen erledigt vielen dank trotzdem!
1 Antwort
Aufgabe 1 erfordert lediglich etwas Grundwissen, wie man auf einzelne Elemente eines Arrays zugreifen und sie ändern kann.
Wichtig dabei ist, dass der Index für den Zugriff bei 0 beginnt. Das heißt, ein Array, welches drei Elemente speichert, hat einen Indexbereich von 0 bis 2 (beide Grenzen inklusiv).
Beispiel:
int[] numbers = new int[] { 4, 5, 6, 7 };
System.out.println(numbers[2]); // 6
numbers[3] = 8;
System.out.println(numbers[3]); // 8
Wenn man nun davon ausgeht, dass das Setzen über eine Methode (ich nenne sie folgend setzeElement) ausgeführt werden soll:
Reihung reihe = new Reihung();
int index = // irgendein Index ...
double wert = // irgendein Wert ...
reihe.setzeElement(index, wert);
müsstest du diese Methode noch in der Klasse ergänzen.
Für Aufgabe 2 solltest du dir erst einmal überlegen, wie du Schritt für Schritt bei einer Liste von Zahlen selbst vorgehen würdest, um den größten Wert zu ermitteln. Oder wenn das als bildliches Beispiel nicht ausreicht, nimm bspw. fünf Karten aus einem Kartenspiel und schau schrittweise, wie du selbst die höchste Karte ermitteln bzw. wie du einer ahnungslosen Person (die nur Karten nehmen und mathematisch vergleichen kann) einen Lösungsweg beschreiben würdest.
Formuliere die Lösungsschritte soweit erst einmal nur in Stichpunkten und schau anschließend, wie du diese Arbeitsschritte mit Grundelementen der Programmierung (Schleifen, Verzweigungen, Variablen) formulieren kannst. Ein Programmablaufplan oder Struktogramm wäre hilfreich. Um eine korrekte Java-Syntax geht es bis dahin nicht. Die Formulierung in Java-Code erfolgt erst am Schluss, wenn dein Ablaufplan steht und deines Erachtens auch korrekt ist.
Hinsichtlich der Methode, die du dafür definieren sollst, reicht das Wissen darüber, wie man einen Wert zurückgibt.
Beispiel:
class Example {
public String getSomeWord() {
return "some word";
}
public int getSum(int numberOne, int numberTwo) {
int result = numberOne + numberTwo;
return result;
}
}
Im Methodenkopf wird noch vor dem Methodennamen der Datentyp des Wertes angegeben, der von der Methode zurückgegeben werden soll. Im obigen Beispiel wäre dies einmal eine Zeichenkette (String) für getSomeWord und eine Ganzzahl (int) für getSum. Der Wert selbst wird nach dem return-Befehl aufgeführt. Mit return springt der Programmfluss auch aus der Methode. Das heißt, nachfolgender Code würde nicht mehr ausgeführt werden.
Die Aufgabe 3 ist eine leichte Abwandlung von Aufgabe 2. Nach wie vor musst du erst die größte Zahl im Array finden, nur wird diesmal die Rückgabe des Index verlangt.
Aufgabe 4 kann man mit Testen lösen oder du rechnest selbst mit ein paar Testwerten. Die random-Methode liefert bei jedem Aufruf einen neuen Wert zwischen 0.0 (inklusiv) und 1.0 (exklusiv).
Praktisch wäre bei all diesen Aufgaben (insbesondere der Letzten) eine Methode gibElementeAufKonsoleAus, die alle Elemente des Arrays einmal auf der Konsole ausgibt. So lässt sich gegentesten, ob z.B. die Suchfunktion das richtige Ergebnis liefert oder nicht.