Felder: arithmetisches und geometrisches Mittel

Hallo,

ich hab ein kleines Porblem mit meinem Code. Wir sollen eine Applikation schreiben, in dem wir das arihtmetische und geometrische Mittel eines Feldes (welches randomisierte Zahlen enthält) ermitteln. Durch Fehlermeldungen weiß ich, dass ich das i in der while-Schleife (siehe Abschnitt 3) definieren muss, nur leider verstehe ich nicht, wie ich das umsetzen kann. Meine Gedanke war, da man ja in den Formlen für i = 1 startet, einfach einen int i = 1 bzw. i = 0 ( um im Feld bei 0 anzufangen). Allerdings fürht das zu der Fehlermeldung: variable x might not have been initialised.
Hoffentlich hab ihr Ideen und könnt mir helfen zu verstehen, wo genau das Problem liegt.
Es wäre gut zu wissen, dass ich bis vor ein paar Wochen nicht einmal wusste, was Java ist (also blutiger Anfänger). Die Erklärungen bitte so einfach wie möglich halten und auf dumme Nachfragen gefasst sein... 😅

Java:
public class Aufgabe2 {
  public static void main(String[] args) {

//erster Abschnitt--------------------------
   System.out.println("Bitte gebe eine Zahl n  größer 1 ein");

        int n = StdIn.readInt(); // int-wert wird von der Kommandozeile übernommen

        if(n<0) {                          // wenn n<1: Fehlermeldung
          System.out.println("n zu kein!");
            return;
        }

//zweiter Abschnitt-------------------------

        int [] Feld = new int [n];

     System.out.println("Array der Länge " +n +"ist: ");

        for (int i =0; i<n; i++) {//mit Zufallszahlen aus dem Bereich 1 bis n gefüllt
                Feld[i] = (int) (Math.random()*n)+1;
                System.out.println(Feld[i]);
         }

//Abschnitt3---------------------------------

        double x;
        double a=0;
        double b=0;
        double y=0;
           while(i<=n && x>0) {
              a=1.0/n*(x*i);//arithmetisches Mittel-Formel
              y=Math.pow(x,i);//neuen Term benennen für "unter die Wurzel".
              b=Math.pow(y,1/n);//Math.pow(y,1/n für n-te Wurzen von y
           }

//vierter Abschnitt--------------------------

        System.out.println(" arithmetische Mittel: " +a);
        System.out.println("geometrische Mittel: " +b);

        if(a>=b){
          System.out.println("OK");
        }
        else {
          System.out.println("WIDERLEGT!");
        }
  }
}
 
Allerdings fürht das zu der Fehlermeldung: variable x might not have been initialised.
In Zeile 27 deklarierst Du eine lokale Variable x, initialisierst diese jedoch nicht. In Zeile 31 versuchst Du im Vergleich x>0 den Wert der nicht initialisierten Variable x zu verwenden. Das funktioniert nicht - daher die Fehlermeldung (hat mit dem i also gar nichts zu tun). Initialisiere die Variable x in Zeile 27, dann läuft das.
 
Wie mihe7 sagt, ist dein x nicht initialisiert.
Setz es gleich 1 oder 0 oder was zu Beginn eben SInn macht. Hauptsache es hat einen Wert.

Bisher macht dein Abshcnitt 3 hinsichtlich deinem Ziel mit dem arithmetischen und geometrischen Mittel noch wenig Sinn.
Oder warst du von der Programmierung her noch nicht an dem Punkt? 🙂
 

Zurück
Oben