Klassen Eigene Exception verwenden

Hi Leute, ich habe folgende Aufgabe vor mir:

Schreiben Sie eine Klasse Statistik, die statische Methoden zur Berechnung der statistischen
Kennzahlen arithmetisches Mittel, geometrisches Mittel undStandardabweichung für eine Folge von Gleitkommazahlen bereitstellt.
Ergänzen Sie die Klasse um die main-Methode. Hier soll der Benutzer über ein Menü die
Möglichkeit haben, eine Berechnungsmethode auszuwählen.
Alle von den Methoden aufgrund nichtzulässiger Werte möglichen Fehler (Ausnahmen) sollen in den
Methoden explizit ausgelöst werden, aber dort nicht behandelt, sondern an die aufrufende Methode
(in diesem Fall an die main-Methode) weitergereicht und behandelt werden.
In der main-Methode soll zusätzlich eine eventuell unerlaubte Option bei der Auswahl der Methoden
explizit eine Ausnahme auslösen und behandelt werden.

Ich habe das programm soweit fertig geschrieben, habe aber immer wieder probleme mit meiner selbst geschriebenen exception. Das thema haben wir grade begonnen und irgendwie tuhe ich mich sehr schwer damit. Im moment erahlte ich für Zeile 6 und 11 folgende Fehlermeldung: "invalid method declaration; return type required."

Vielleicht kann mir ja jemand auf die sprünge helfen.

Ich warte gespannt,

grüße

simon

Java:
 import java.util.*;

class falscheAuswahl extends Exception {
	string s;

	falscheAuswahlException() {
		super();
			
	}
			
	falscheAuswahlException(String s){
		super(s);
	}

}//falscheAuswahl
		
		


class statistik{
		
		Scanner in = new Scanner(System.in);
		
		//Methode, die das arithmetische Mittel des Feldinhaltes von a berechnet
		static double arithmetischesMittel(double[]a, int n){			
			double aMittel = 0;
			double summe = 0;
			int i;
			
			for(i=0; i<n; i++){
				summe = summe + a[i];
			}//for
			aMittel = summe/i;
			return aMittel;
		}//arithmetischesMittel
		
		//Methode, die das geometrische Mittel des Feldinhaltes von a berechnet
		static double geometrischesMittel(double[]a,int n){
			double gMittel = 0;
			double produkt = 0;
			int i;
			
			for(i=0; i<n; i++){
				produkt = produkt * a[i];
			}
			gMittel = Math.pow(produkt, 1/n);
			return gMittel;
		}//geometrisches Mittel
		
		//Methode, die das geometrische Mittel des Feldinhaltes von a berechnet
		static double varianz(double[]a,int n){
			double aMittel;
			aMittel = arithmetischesMittel(a,n);
			double summe;
			double varianz;
			int i;
			
			for(i=0; i<n; i++){
				summe = summe + (a[i]-aMittel*a[i]-aMittel);
			}//for
			
			varianz = 1/(n-1) * summe;
			return varianz;
		}//varianz
		
		//Methode, die mit Hilfe der Varianz die Standardabweichung des Feldinhaltes berechnet
		static double standardAbweichung(double[]a,int n){
			double varianz = 0;
			double sAbweichung = 0;
			
			varianz = varianz(a,n);
			sAbweichung = Math.sqrt(varianz);
			
			return sAbweichung;
		}//standardAbweichung
			
			
			
			
		public static void main(String[] args) {
			Scanner in = new Scanner(System.in);
			int n=0;
			int i;
			double [] zahlen;								
			boolean eingabe;
			int auswahl;
			System.out.println("Bitte geben sie zunächst die gewuenschte Anzahl an Werten ein und wählen sie danach eine Operation aus.");
			
			do{
				try{
					System.out.println("Wie viele Werte sollen eingelesen werden?: ");		
					n = in.nextInt();
					zahlen = new double [n];												//erstellen des Feldes
					eingabe = true;
					}//try
						catch(InputMismatchException e) {
								System.out.println("Eingabefehler");
								sc.next();								// fehlerhafter Wert steht noch im Eing.Puffer,
								eingabe = false;
						 }//catch
			}//do
				while(!eingabe);
    
			for(i=0; i<n; i++){														//For Schleife beschreibt das feld mit eingegebenen Zahlen
			System.out.println("Bitte geben Sie den" + (i+1) +". Wert ein: ");
			zahlen[i] = in.nextDouble;
					
					
			}//for
			
			do{
				try{System.out.println("Folgende Operationen sind möglich: ");
					System.out.println(" 1 - arithmetisches Mittel");
					System.out.println(" 2 - geometrisches Mittel");
					System.out.println(" 3 - Standardabweichung");
					System.out.println("Welche Berechnung soll mit der Wertemenge durchgefeuhrt werden?: ");
					auswahl = in.nextInt();
					
					if((auswahl!=1)&&(auswahl!=2)&&(auswahl!=3)){
						throw new falscheAuswahlException("Sie haben eine ungültige Auswahl getroffen");
					}//if
					eingabe = true;
				}//try
						catch(falscheAuswahlException e){
							System.out.println(e.getMessage());
							eingabe = false;
						}//catch
			}//do	
				while(!eingabe);
			
			switch(auswahl){
				
				case 1 :
						double aMittel;
						aMittel = arithmetischesMittel(zahlen, n);
						System.out.println("das arithmetische Mittel ist : " + aMittel);
						break;
				case 2 :
						double gMittel;
						gMittel = geometrischesMittel(zahlen, n);
						System.out.println("das geometrische Mittel ist : " + gMittel);
						break;
				case 3 :
						double sAbweichung;
						sAbweichung = standardAbweichung(zahlen, n);
						System.out.println("die Standardabweichung ist : " + sAbweichung);
						
			}//switch
			
		}//main
				
}// statistik
 

Da_Tebe

Mitglied
Zeile 6 und 11 sehen aus wie Methoden.
Sollen das Methoden werden? Dann fehlt noch die Sichtbarkeit (public,private,protected) und der Rückgabewert(void, int...etc.)
vor dem Methodennamen.

[EDIT]
Und ein Konstruktor für die erste Klasse fehlt auch soweit ich das sehe.
[/EDIT]
 

Volvagia

Top Contributor
Die sehen eher wie Konsturktors aus. Nur sie haben nicht den Klassennamen. (Bei so einen Klassennamen würde ich mich aber als Konstruktor auch schämen ihm anzunehmen.)
Sichtbarkeit ist ja package private alias default.

[EDIT]Fliegt in Zeile 4 eigendlich keine Exception?[/EDIT]
 
Zuletzt bearbeitet:

Attila

Bekanntes Mitglied
Java:
public class FalscheAuswahl extends Exception {
   public FalscheAuswahl()
   public FalscheAuswahl(String message) {
      super(message);
   }
}
Java:
try{
   //...
}catch (FalscheAuswahl ex) {......}
 
Zuletzt bearbeitet:
Ich hab das jetzt soweit alles beachtet, müsste wahrscheinlich funktionieren. War natürlich dumm, dem Konstruktor nicht den richtigen namen zuzuordnen. Ich habe jetzt allerdings ein weiteres Problem. Undzwar kommt jetzt für zeile 135,140,145, die fehlermeldung, dass ich die variable zahlen nicht initialisiert hätte. diese variable ist ja eine feld, dass ich vorher durch eine for-schleife beschreiben lasse. wo ist jetzt das problem?


also danke nochmal im voraus

greeetz


Java:
 import java.util.*;

class falscheAuswahl extends Exception {
	

	public falscheAuswahl() {
		super();
			
	}
			
	public falscheAuswahl(String s){
		super(s);
	}

}//falscheAuswahl
		
		


class statistik{
		
		Scanner in = new Scanner(System.in);
		
		//Methode, die das arithmetische Mittel des Feldinhaltes von a berechnet
		static double arithmetischesMittel(double[]a, int n){			
			double aMittel = 0;
			double summe = 0;
			int i;
			
			for(i=0; i<n; i++){
				summe = summe + a[i];
			}//for
			aMittel = summe/i;
			return aMittel;
		}//arithmetischesMittel
		
		//Methode, die das geometrische Mittel des Feldinhaltes von a berechnet
		static double geometrischesMittel(double[]a,int n){
			double gMittel = 0;
			double produkt = 0;
			int i;
			
			for(i=0; i<n; i++){
				produkt = produkt * a[i];
			}
			gMittel = Math.pow(produkt, 1/n);
			return gMittel;
		}//geometrisches Mittel
		
		//Methode, die das geometrische Mittel des Feldinhaltes von a berechnet
		static double varianz(double[]a,int n){
			double aMittel;
			aMittel = arithmetischesMittel(a,n);
			double summe = 0;
			double varianz;
			int i;
			
			for(i=0; i<n; i++){
				summe = summe + (a[i]-aMittel*a[i]-aMittel);
			}//for
			
			varianz = 1/(n-1) * summe;
			return varianz;
		}//varianz
		
		//Methode, die mit Hilfe der Varianz die Standardabweichung des Feldinhaltes berechnet
		static double standardAbweichung(double[]a,int n){
			double varianz = 0;
			double sAbweichung = 0;
			
			varianz = varianz(a,n);
			sAbweichung = Math.sqrt(varianz);
			
			return sAbweichung;
		}//standardAbweichung
			
			
			
			
		public static void main(String[] args) {
			Scanner in = new Scanner(System.in);
			int n=0;
			int i;
			double [] zahlen;								
			boolean eingabe;
			int auswahl=0;
			System.out.println("Bitte geben sie zunächst die gewuenschte Anzahl an Werten ein und wählen sie danach eine Operation aus.");
			
			do{
				try{
					System.out.println("Wie viele Werte sollen eingelesen werden?: ");		
					n = in.nextInt();
					zahlen = new double [n];												//erstellen des Feldes
					eingabe = true;
					}//try
						catch(InputMismatchException e) {
								System.out.println("Eingabefehler");
																// fehlerhafter Wert steht noch im Eing.Puffer,
								eingabe = false;
						 }//catch
			}//do
				while(!eingabe);
    
			for(i=0; i<n; i++){								//For Schleife beschreibt das feld mit eingegebenen Zahlen
			System.out.println("Bitte geben Sie den" + (i+1) +". Wert ein: ");
			zahlen[i] = in.nextDouble();
					
					
			}//for
			
			do{
				try{System.out.println("Folgende Operationen sind möglich: ");
					System.out.println(" 1 - arithmetisches Mittel");
					System.out.println(" 2 - geometrisches Mittel");
					System.out.println(" 3 - Standardabweichung");
					System.out.println("Welche Berechnung soll mit der Wertemenge durchgefeuhrt werden?: ");
					auswahl = in.nextInt();
					
					if((auswahl!=1)&&(auswahl!=2)&&(auswahl!=3)){
						throw new falscheAuswahl("Sie haben eine ungültige Auswahl getroffen");
					}//if
					eingabe = true;
				}//try
						catch(falscheAuswahl e){
							System.out.println(e.getMessage());
							eingabe = false;
						}//catch
			}//do	
				while(!eingabe);
			
			switch(auswahl){
				
				case 1 :
						double aMittel;
						aMittel = arithmetischesMittel(zahlen, n);
						System.out.println("das arithmetische Mittel ist : " + aMittel);
						break;
				case 2 :
						double gMittel;
						gMittel = geometrischesMittel(zahlen, n);
						System.out.println("das geometrische Mittel ist : " + gMittel);
						break;
				case 3 :
						double sAbweichung;
						sAbweichung = standardAbweichung(zahlen, n);
						System.out.println("die Standardabweichung ist : " + sAbweichung);
						
			}//switch
			
		}//main
				
}// statistik
 
N

nillehammer

Gast
Du hast
Code:
zahlen
in einer Schleife und zusätzlich in einem try-Block initialisiert. Theoretisch (hier zwar nicht) könnte es sein , dass die Schleife überhaupt nicht durchlaufen wird oder im try-Block ist vielleicht eine Exception geflogen. Deswegen hält der Compiler die Variable für nicht initialisiert. Die einfachste Lösung ist, das zahlen-Array bei der Deklaration mit einem Default-Wert (evtl Array der Länge 0) zu initialisieren. Die etwas kompliziertere ist, Deinen Code in Methoden mit geeigneten Rückgabewerten und Übergabeparametern aufzusplitten.

[EDIT]
Ich seh sogar, nicht nur theoretisch kann hier vor Initialisierung eine Exception fliegen. Dann wäre Zahlen auch praktisch nicht initialisiert und der Compiler beschwert sich zu Recht.
[/EDIT]
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Eigene Exception - ohne werfen abfangen Java Basics - Anfänger-Themen 2
low_in_the_head Eigene Exception nutzen Java Basics - Anfänger-Themen 4
L Meine erste eigene Exception Klasse Java Basics - Anfänger-Themen 10
L Eigene Exception schreiben bei zu langem Array Java Basics - Anfänger-Themen 10
F Klassen Eigene Exception Bedingungen festlegen Java Basics - Anfänger-Themen 2
C eigene Exception Java Basics - Anfänger-Themen 4
S Eigene Exception Klasse - fehlender Konstruktor mit String Java Basics - Anfänger-Themen 3
S Eigene Exception Schreiben und Welche Auslösen wie ? Java Basics - Anfänger-Themen 7
T eigene Exception Klasse Java Basics - Anfänger-Themen 12
B eigene Exception.... Java Basics - Anfänger-Themen 5
F Eigene Exception StackTrace und Message ist leer warum??? Java Basics - Anfänger-Themen 3
R Eigene Exception deklarieren Java Basics - Anfänger-Themen 3
F eigene Exception aus try-catch werfen Java Basics - Anfänger-Themen 10
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
T Datentypen Eigene Datentypen Java Basics - Anfänger-Themen 15
C Archiv für eigene Klassen Java Basics - Anfänger-Themen 9
D Attribut Telefonnummer - eigene Klasse oder String Java Basics - Anfänger-Themen 13
B JUnit 4: Wie man die eigene Liste testen kann [TDD] Java Basics - Anfänger-Themen 46
C eigene Methoden erstellen (Instanzmethoden) Java Basics - Anfänger-Themen 7
S Eigene LinkedList Klasse Java Basics - Anfänger-Themen 4
I Eigene Java Tools Nutzung Java Basics - Anfänger-Themen 6
G eigene Bibliothek einbinden Java Basics - Anfänger-Themen 1
K Eigene Annotations, Pre-/Post-/Call-Method Java Basics - Anfänger-Themen 6
O Erste Schritte Eigene charAt(i) Methode schreiben Java Basics - Anfänger-Themen 10
D Methoden Eigene Methode um alle Ausgaben aufzurufen Java Basics - Anfänger-Themen 17
P Maven und eigene Jars Java Basics - Anfänger-Themen 4
J Algorithmus - Strings auf eigene Reihenfolge miteinander vergleichen Java Basics - Anfänger-Themen 4
R Interface Eigene Objekte in Listen sortieren mit Interface Comparable Java Basics - Anfänger-Themen 5
A Eigene Methoden entwicken Java Basics - Anfänger-Themen 3
H GSON-Bibliothek für eigene Programme benutzen Java Basics - Anfänger-Themen 2
H Klassen auf eigene Klasse zugreifen Java Basics - Anfänger-Themen 2
N Eclipse - eigene Icons unter ClassPath Resource Java Basics - Anfänger-Themen 0
N Eigene Stream Methoden implementieren Java Basics - Anfänger-Themen 3
R eigene Graphikbedienelemente Java Basics - Anfänger-Themen 8
V Generics / eigene Liste Java Basics - Anfänger-Themen 4
T Eigene Bedingung in IF-Bedingung Java Basics - Anfänger-Themen 22
P Java 8 & Eigene Applets Java Basics - Anfänger-Themen 3
E Best Practice Exaktes Rechnen mit (Pseudo-)Rationalen/Realen Zahlen. Operations Zuweisung für (eigene) Klassen Java Basics - Anfänger-Themen 3
G eigene Bibliothek in Java importieren Java Basics - Anfänger-Themen 5
D Klassen Eigene Klasse für ArrayList Java Basics - Anfänger-Themen 6
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
B Klassen Eigene "non static" Klasse in Main verwenden! Java Basics - Anfänger-Themen 12
P Vererbung Eigene HashMap Variante Java Basics - Anfänger-Themen 2
J Eigene Klasse für die Variablen? Java Basics - Anfänger-Themen 3
P Eigene Knöpfe mit eigenem Listener Java Basics - Anfänger-Themen 5
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
T Muss ein Parametertest immer eine eigene Testklasse sein? Java Basics - Anfänger-Themen 3
B Multithreading und eigene Queue entwickeln Java Basics - Anfänger-Themen 3
O GUI: Eigene Fenster "Form"? Java Basics - Anfänger-Themen 13
F Eigene LinkedList - toString Java Basics - Anfänger-Themen 10
O Denkanstöße für eigene Konfigurations-Datei Java Basics - Anfänger-Themen 12
SexyPenny90 Wieso ist diese eigene Equals-Methode schlecht? Java Basics - Anfänger-Themen 17
M externe JARs in die eigene JAR einbinden Java Basics - Anfänger-Themen 9
V Klassen import - einfaches Umleiten auf eigene Klassen? Java Basics - Anfänger-Themen 8
B eigene klasse in listen eintragen Java Basics - Anfänger-Themen 6
A Objekte in eigene Klasse auslagern Java Basics - Anfänger-Themen 2
S [JavaFX 2.1] - Eigene Sprachauswahl? Java Basics - Anfänger-Themen 4
J eigene packages bzw klassen verwenden Java Basics - Anfänger-Themen 25
E Eigene Stackklasse Java Basics - Anfänger-Themen 7
B Eigene Exceptions entwerfen Java Basics - Anfänger-Themen 3
P eigene kleine Datenverwaltung Java Basics - Anfänger-Themen 5
N Eigene Methoden-> Werte übergeben Java Basics - Anfänger-Themen 5
U Klassen Eigene Klassen importieren Java Basics - Anfänger-Themen 13
Kenan89 ActionListener in eigene Klasse Java Basics - Anfänger-Themen 8
E Object in eigene Klasse umwandeln? Java Basics - Anfänger-Themen 7
S Eigene Klassen addieren Java Basics - Anfänger-Themen 3
B OOP Eigene Objekte in Arrays zusammenfassen Java Basics - Anfänger-Themen 3
E Eigene class datum Java Basics - Anfänger-Themen 2
G Eigene MessageBox kreieren Java Basics - Anfänger-Themen 9
I Erste Schritte Eigene Fehlermeldungen bei Exceptions Java Basics - Anfänger-Themen 19
F Klassen Eigene Klasse definieren Java Basics - Anfänger-Themen 4
S Eigene KeyEvent-Mask erstellen Java Basics - Anfänger-Themen 4
X Eigene Libary Java Basics - Anfänger-Themen 2
Crashbreaker Eigene Java-Programm ohne hilfe des CMD starten Java Basics - Anfänger-Themen 11
A Klassen Eigene Datenklasse - Strings mit fixer Länge Java Basics - Anfänger-Themen 2
G Shape um eigene Achse drehen Java Basics - Anfänger-Themen 2
P Vererbung Basisklasse soll eigene Methode benutzen Java Basics - Anfänger-Themen 38
F Eigene Klasse für die Keys von HashMap Java Basics - Anfänger-Themen 5
J Eigene kleine Datenbank programmieren Java Basics - Anfänger-Themen 2
G Eigene Klasse als Array, zugriff? Java Basics - Anfänger-Themen 2
xehpuk Ordner "Eigene Bilder" ansteuern Java Basics - Anfänger-Themen 3
V Sonderzeichen als eigene "Operatoren" im JTextField Java Basics - Anfänger-Themen 4
S Eigene Stack Klasse Java Basics - Anfänger-Themen 26
D Eigene equals methode schreiben Java Basics - Anfänger-Themen 4
dataframe OOP Eigene typisierte Liste Java Basics - Anfänger-Themen 3
W GUI als eigene Klasse oder in die Startklasse? Java Basics - Anfänger-Themen 21
T Konstruktor für eigene Klasse erstellen Java Basics - Anfänger-Themen 6
H Buttonbefehle in eigene Klasse schreiben Java Basics - Anfänger-Themen 8
M Datentypen Eigene iterierbare Liste Java Basics - Anfänger-Themen 4
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
S Klassendiagramm - nur eigene Klassen? Java Basics - Anfänger-Themen 3
nrg Eigene simple List-Klasse programmieren Java Basics - Anfänger-Themen 3
C Eigene Interpreter-Programmiersprache mit Java Java Basics - Anfänger-Themen 17
N Java Programm soll Datei in eigene jar schreiben Java Basics - Anfänger-Themen 13
M Eigene Pakete in Eclipse erstellen Java Basics - Anfänger-Themen 5
M Eigene Hash Funktion Java Basics - Anfänger-Themen 5
O Eigene Exceptions Java Basics - Anfänger-Themen 11
H eigene Schriftarten registrieren Java Basics - Anfänger-Themen 5
Kasoki Eigene Funktionen / Commands Java Basics - Anfänger-Themen 14
M Eigene LinkedList und Nodes Java Basics - Anfänger-Themen 20

Ähnliche Java Themen

Neue Themen


Oben