Ich habe Probleme mit meinem Code.
Ich rufe eine Methode auf die ein Array als Rückgabe liefert. Allerdings bekomme ich die Fehlermeldung - This method must return a result of Type int[]
Ich finde den Fehler einfach nicht.
Der Compiler bringt mir die Fehlermeldung bei Zeile 6 meiner Generate Klasse.
public class Generate {
public int[] zufall3(int zahl1, int zahl2){
// zahl 1 = Zufallszahlen bis x
// zahl 2 = Menge der Zufallszahlen
Random zufall = new Random();
int[] arr = new int[zahl2];
for (int i=0; i<zahl2; i++){
arr=zufall.nextInt(zahl1);
System.out.println(arr);
}
Eingabe sc = new Eingabe();
final boolean weiter;
weiter = sc.getBoolean("Zufallszahlen sortieren? True oder False: ");
if (!weiter) {
return arr;
}
else
{
int aL = arr.length; //array length
int a;
int b;
for (int k=0; k<aL-1; k++){
for (int i=0; i<aL-1; i++){
if (arr>arr[i+1]){
a=arr;
b=arr[i+1];
arr=b;
arr[i+1]=a;
}
}
[CODE lang="java" title="Klasse Main"]package Klassen;
public class Main {
public static void main(String[] args) {
Generate g = new Generate();
g.zufall3(1000, 5);
}
}
[/CODE]
[CODE lang="java" title="Klasse Eingabe"]package Klassen;
import java.util.Scanner;
public class Eingabe {
private String text;
private int zahl;
private boolean weiter;
public int getZahl(String Aufforderung){
System.out.println(Aufforderung);
boolean ok = false;
Scanner scan = new Scanner(System.in);
do {
try {zahl =
Integer.parseInt(scan.next());
ok = true;
} catch (NumberFormatException e)
{ System.out.println("Bitte nur Zahlen eingeben!");}
} while (!ok);
return zahl;
}
public boolean getBoolean(String Aufforderung){
Scanner sc = new Scanner(System.in);
weiter = sc.nextBoolean();
return weiter;
}
public String getText(String Aufforderung){
System.out.println(Aufforderung);
Scanner scan = new Scanner(System.in);
text = scan.next();
return text;
}
public int getZahl(){
return zahl;
}
public String getText(){
return text;
}
}[/CODE]
Deine Methode muss in allen Fällen ein Array zurückgeben. Und zwar Ende. So wie deine Methode jetzt geschrieben ist, ist sie Unfug.
Ein return beendet die Methode und liefert das Ergebnis zurück - das steht in der Regel am Ende der Methode (da steht bei dir "Fertig" als Ausgabe - aber kein return). Dafür steht das return in den for schleifen was dazu führt, dass - wenn die Schleife durchlaufen wird - der im ersten Durchlauf der Schleife sofort die Methode beendet.
Alles klar vielen Dank für die Antwort.
Ich hab mich mit meiner Formatierung einfach selber in die Irre geführt.
Jetzt kann ich den Code noch etwas sauberer schreiben und vollenden.