Übung Felder java Error kompilieren

derpropeller

Mitglied
Hallo Leute,

ich bin Anfänger und mache seit gestern eine Übung über Felder und bin langsam am verzweifeln.
Ich verstehe einfach nicht was das Problem ist und auch warum die simple Ausgabe der originalen Messwertliste nicht funktioniert. Ich hatte gehofft ihr könntet mir einen Tipp geben was ich da falsch gemacht habe.
Die beiden java Fehler bei der Varianz haben ja scheinbar was mit dem Aufruf der Methode zur Berechnung des Mittelwertes zu tun, ich kann aber nicht nachvollziehen was das Problem ist.
3 Fehler:
error.jpg

Java:
//Programm MessReihe.java Serie 3

import Tools.IO.*;

public class MessReihe{
	
	//Methode für die Eingabe
	public static double[] eingabe(){
		double[] original = new double[IOTools.readInteger("Anzahl der Messwerte: ")];
		System.out.println("Eingabe der Messwerte:");
		for(int i = 0;i < original.length;i++){
			original[i] = IOTools.readDouble("v["+i+"]=");
		}
		return original;
	}
	
	//Methode für die Ausgabe
	public static void ausgabe(double[] original){
		System.out.println("Ausgabe der Messwerte:");
		for(int i = 0;i < original.length;i++){
			System.out.println("v["+i+"]="+original[i]);
		}
	}
	
	//Methode zur Berechnung des Mittelwertes
	public static double mittelWert(double[] original){
		double mittelWert = 0;
		for(int i = 0;i < original.length;i++){
			mittelWert = mittelWert + original[i];
		}
		mittelWert = mittelWert / original.length;
		return mittelWert;
	}
	
	//Methode zur Berechnung der Varianz
	public static double varianz(double[] original){
		double varianz = 0;
		for(int i = 0;i < original.length;i++){
			varianz = varianz + ((original[i] - mittelWert())*(original[i] - mittelWert()));
		}
		varianz = varianz / (original.length - 1);
		return varianz;
	}
	
	//Methode zur Glättung der Messwerte mittels Binomialfilter
	public static double[] glaetten(double[] original){
		double[] glatt = new double[original.length];
		for(int i = 0;i < original.length;i++){
			glatt[i] = (((1 * original[i-1])+(2 * original[i])+(1 * original[i+1])) / 4 );
		}
		return glatt;
	}
	
	/* Methode zur Berechnung der Differenz der 
	   originalen und geglätteten Werte */
	public static double[] differenz(double[] original, double[] glatt){
		double[] diff = new double[original.length];
		for(int i = 0;i < original.length;i++){
			diff[i] = ( original[i] - glatt[i] );
		}
		return diff;
	}
	
	//Hauptmethode
	public static void main(String args[]){
		eingabe();
		ausgabe();
	}
}
 
Moin,

eigentlich steht es doch da!
Deine Methoden erwarten beim Aufruf ein Array mit double-Werten, du übergibst aber nichts !!
Java:
varianz = varianz + ((original[i] - mittelWert())*(original[i] - mittelWert()));
die Methode "Mittelwert" erwartet ein Array als Parameter!

Gruß
Klaus

EDIT:
Weiterhin:
Java:
    //Methode zur Berechnung des Mittelwertes
    public static double mittelWert(double[] original){
    double mittelWert = 0;
Benenne die Methode und ihre lokale Variable NICHT gleich !!
 
Zuletzt bearbeitet:
Hey,

ahh vielen Dank, das macht natürlich durchaus Sinn ;-)

Allerdings weiß ich immer noch nicht was das Problem der Ausgabe ist, "original" funktioniert nicht, weil Variable unbekannt und
Java:
	public static void main(String args[]){
		eingabe();
		ausgabe(eingabe());
	}
funktioniert, macht aber wenig Sinn.
 
Zuletzt bearbeitet:
Moin,

auch das steht doch unten ganz deutlich in der Fehlermeldung!!

Du übergibst hier ebenfalls nicht das, was gefordert ist!
Kleiner Tipp: schau' Dir mal die Signatur der Methode "ausgabe" an sowie den Rückgabewert der dort aufgefrufenen Methode "mittelWert" !!

Gruß
Klaus
 
Hey,
ich hab mir nochmal Methoden grundlegend angesehen und verstehe jetzt was gemeint ist.
Das Programm funktioniert zwar noch nicht, weil ich keine Ahnung habe wie ich die Stellen [-1] und [n+1] eines Feldes
für die Binomialfilterberechnung definiere, aber das finde ich schon irgendwie heraus 🙂
Hier die korrigierte Fassung:
Java:
//Programm MessReihe.java WS13/14 Serie 3

import Tools.IO.*;

public class MessReihe{
	
	//Methode für die Eingabe
	public static double[] eingabe(){
		double[] x = new double[IOTools.readInteger("Anzahl der Messwerte: ")];
		System.out.println("Eingabe der Messwerte:");
		for(int i = 0;i < x.length;i++){
			x[i] = IOTools.readDouble("v["+i+"]=");
		}
		return x;
	}
	
	//Methode für die Ausgabe
	public static void ausgabe(double[] a){
		System.out.println("Ausgabe der Messwerte:");
		for(int i = 0;i < a.length;i++){
			System.out.println("v["+i+"]="+a[i]);
		}
	}
	
	//Methode zur Berechnung des Mittelwertes
	public static double mittelWert(double[] original){
		double mWert = 0;
		for(int i = 0;i < original.length;i++){
			mWert = mWert + original[i];
		}
		mWert = mWert / original.length;
		return mWert;
	}
	
	//Methode zur Berechnung der Varianz
	public static double varianz(double[] original){
		double vz = 0;
		for(int i = 0;i < original.length;i++){
			vz = vz + ((original[i] - mittelWert(original))*(original[i] - mittelWert(original)));
		}
		vz = vz / (original.length - 1);
		return vz;
	}
	
	//Methode zur Glättung der Messwerte mittels Binomialfilter
	public static double[] glaetten(double[] original){
		double[] y = new double[original.length];
		for(int i = 1;i < original.length;i++){
			y[i] = (((1 * original[i-1])+(2 * original[i])+(1 * original[i+1])) / 4 );
		}
		return y;
	}
	
	/* Methode zur Berechnung der Differenz der 
	   originalen und geglätteten Werte */
	public static double[] differenz(double[] original, double[] glatt){
		double[] z = new double[original.length];
		for(int i = 0;i < original.length;i++){
			z[i] = ( original[i] - glatt[i] );
		}
		return z;
	}
	
	//Hauptmethode
	public static void main(String args[]){
		
		double[] original = eingabe();
		double[] glatt = glaetten(original);
		double[] diff = differenz(original,glatt);
		System.out.println("Mittelwert: "+mittelWert(original));
		System.out.println("Varianz: "+varianz(original));
		ausgabe(original);
		ausgabe(glatt);
		ausgabe(diff);
	
	}
}

Vielen Dank für die Hilfe!
 

Neue Themen


Zurück
Oben