Array aus Methode in anderer Methode sichtbar machen

julian0507

Mitglied
HI ich habe 2 Methoden: eine zum Erstellen eines Arrays, die zweite um das Minimum des Arrays auszugebebn. Wie kann ich in der Methode Minimum auf das Array aus der Methode Eingabe zugreifen?Screenshot (13).png
 
Da geht so erst einmal nicht. Eine lokale Variable ist nur innerhalb des Blocks nutzbar.

Was Du aber machen kannst:
  • Statt einer lokalen Variable könntest Du eine Klassenvariable nutzen. (Also direkt in der Klasse selbst die Variable deklarieren: static double[] werte;.)
  • Du kannst die Referenz zu rück geben. Eingabe gibt also double[] zurück und Du hast dann ein return werte;, innerhalb der main Methode kannst Du diese Rückgabe in einer lokalen Variablen speichern und diese dann bei der anderen Methode übergeben.

An der Stelle noch zwei Hinweise:
a) Versuch bitte, Code in Code Tags (Den Knopf </> oberhalb des Eingabefelds!) zu posten.
b) Methoden sollten immer klein anfangen und verben nutzen. Also wäre Methodennamen wieeingabeAbfragen und minimumAusgeben oder so ähnlich besser.
 
Da geht so erst einmal nicht. Eine lokale Variable ist nur innerhalb des Blocks nutzbar.

Was Du aber machen kannst:
  • Statt einer lokalen Variable könntest Du eine Klassenvariable nutzen. (Also direkt in der Klasse selbst die Variable deklarieren: static double[] werte;.)
  • Du kannst die Referenz zu rück geben. Eingabe gibt also double[] zurück und Du hast dann ein return werte;, innerhalb der main Methode kannst Du diese Rückgabe in einer lokalen Variablen speichern und diese dann bei der anderen Methode übergeben.

An der Stelle noch zwei Hinweise:
a) Versuch bitte, Code in Code Tags (Den Knopf </> oberhalb des Eingabefelds!) zu posten.
b) Methoden sollten immer klein anfangen und verben nutzen. Also wäre Methodennamen wieeingabeAbfragen und minimumAusgeben oder so ähnlich besser.
Oke danke schonmal für die Tipps, aber durch das return werte; gibt er mir ja dann einen Fehler aus, das die Methode kein double Array zurückgibt, oder?
 
Bei 5 steht: The method must return a result of type double[]
aber werte ist doch ein doubl[] oder?

Java:
public class ArrayUtil {
  
    static double[] werte;
  
    public static double[] Eingabe() {
      
        BufferedReader in = new BufferedReader (new InputStreamReader(System.in));
        try {
            System.out.println("Geben Sie eine Anzahl an: ");
            String s = in.readLine();
            int anzahl = Integer.parseInt(s);
          
            werte = new double[anzahl];
          
            System.out.println("Geben sie " + anzahl + " Werte ein");
          
            for (int i=0; i<=werte.length - 1;i++) {
                String s2 = in.readLine();
                werte[i] = Double.parseDouble(s2); 
            }
          
            System.out.println(Arrays.toString(werte));
            return werte;
      
        }
 
Du zeigst nicht die ganze Methode. Du hast aber einen try Block. Vermutlich wird da auch ein catch kommen.

Wenn da also nun eine Exception auftritt, dann geht der Ablauf je im Catch Block weiter um dann da auch die Methode zu verlassen. Und auf dem Weg fehlt vermutlich ein return.

Und dann ist wichtig: Ich habe zwei Lösungen aufgezeigt. Du kannst also den ersten Punkt machen oder den zweiten. (Beide zusammen gehen natürlich auch, aber das wäre nicht nötig.)
 
Und plötzlich funktioniert das ganze Programm...danke.
Musste die werte in der main-Methode nicht mehr zwischenspeichern, da die 2. Methode die Werte nun lesen konnte.
 

Zurück
Oben