Array?
Ich stehe vor folgendem Problem: Ich komme nicht weiter.
Die Aufgabenstellung lautet:
Implementieren Sie eine Klasse Feldarbeiten mit einem Konstruktor, der ein Array der Länge n erzeugt und dieses mit ganzzahligen Zufallszahlen belegt. Sorgen Sie dafür, dass keine zwei gleichen Zahlen im Array gespeichert werden. Ergänzen Sie eine Methode INT Minimum(), die den kleinsten Wert berechnet und zurückgibt und eine Methode int Summe(), die den Wert der Summe aller Elemente des Array gespeichert werden.
Mein Ansatz:
public class Feldarbeiten {
private double[] Feldarbeiten() {
feldarbeiten = new double[n],
}
public int minimum() {
Weiter komme ich nicht.
PS.: Wir müssen es in BlueJ machen (10. Klasse).
3 Antworten
Ich mache die kleinen Aufgaben immer gerne mit Streams, weil die schön kurz und übersichtlich sind. Vermutlich sollt ihr das aber mit Schleifen lösen.
import java.util.Arrays;
import java.util.Random;
public class Feldarbeiten {
// Es geht um Ganzzahlen, also deklarieren wir ein int-Array
int[] zahlen;
// Konstruktor
public Feldarbeiten(int n) {
// Das Array wird gefüllt mit
zahlen = new Random() // zufälligen
.ints() // Ganzzahlen (ohne Beschränkung, also zwischen -2147483648 und 2147483647)
.distinct() // ohne Duplikate
.limit(n) // Anzahl: n
.toArray();
}
// Die kleinste Zahl des Arrays wird zurückgegeben
public int minimum() {
return Arrays.stream(zahlen).min().getAsInt();
}
// Die Summe der Zahlem im Array wird zurückgegeben
// (da die einzelnen Werte im Array unbegrenzt sind, kann es gut sein,
// dass die Summe zu groß oder zu klein für ein int ist und die Methode
// eine Fehlermeldung ausgibt)
public int summe() {
return Arrays.stream(zahlen).sum();
}
}
Also erstmal hat eine Konstruktor als Rückgabetyp die Klasse selbst. Das double[] ist also völliger Unsinn.
Dann hast du die Variablen "feldarbeiten" und "n" nirgends definiert. "feldarbeiten" sollte ein Attribut der Klasse sein und n ein Parameter des Konstruktors.
class Example
double attribute;
public Example(double parameter) {
attribute = parameter;
}
}
Dieses Beispiel sollte diese beiden Punkte erklären.
Um die Summe eines Arrays zu berechnen musst du durch das Array iterieren und dabei die jeweiligen Werte zu einer Summenvariable addieren. Um das Minimum zu erhalten, iteriere und vergleiche mit einer Minimumvariable. Ist der Wert kleiner als das derzeitige Minimum, wird dies das neue Minimum.
Ich mache mal ein beispiel in Python
from random import randint
def minimum(array):
minZahl = array[0]
for i in range(1,len(array)):
if array[i]<minZahl:
minZahl = array[i]
return minZahl
array = []
n = 10
for i in range(n):
array += [randint(1,100)]
print(*array)
print(minimum(array))
Ähnlich die einzelnen Elemente wie die For-Schleife und das If kannst du (fast) 1 zu 1 übertragen.
Wir müssen es in BlueJ machen wäre das das Selbe?