Compiler-Fehler unreported exception

  • Themenstarter Themenstarter Nikamort
  • Beginndatum Beginndatum
N

Nikamort

Gast
Hallo,
ich bin absoluter Anfänger in Sachen Java. Ich habe mir erstmal ein paar Klassen von meinen Komolitonen gezogen um einen Überblick über die ganze Geschichte zu bekommen....

Jetzt habe ich das Problem dass er manche sachen nicht Compilen kann, die aber zuvor bei den anderen gelaufen sind ( und das immer noch tun!!!) ich habe die klassen genauso kopiert....
Bin etwas ratlos.

Immer wenn eine do while schleife anfängt und ich etwas einlesen möchte kommt folgende Fehlermeldung :

unreported exception java.lang.exception must be caught or declared to be thrown

...!? Ich kann damit gar nix anfangen zumal es ja bei den anderen läuft....

Hier ein Beispiel :
Bei n = fenster.readInt("n: "); kommt der Fehler....
[Java]
public class Endliche_Summen
{
public static void main( String args[] ) {
JConsole fenster = new JConsole("Summe Aufgabe 10_b");

while (true) {
int n;

// Einlesen von n (Ganzzahl > 0)
do {
n = fenster.readInt("n: ");
}
while (n < 1);

// 1. Versuch: Berechnung der 1. Summe der Aufgabe mit einem int-Datentyp.
int s = 0; // Initialisierung der int-Summe auf 0 !!

for (int k = 1; k <= n; k++) {
s += k*k;
}
fenster.println(" int-Summe 1 bis n von k²: " + s);

/* Die Aufgabe sieht auf den ersten Blick sehr einfach aus. Jedoch kann
* die Summe der Quadrate (abhängig von n) sehr groß werden! Wählt man
* als Datentyp der Summenvariable int, so kann man feststellen (einfach
* einmal n eingeben!), dass bei n = 1861 eine negative Summe herauskommt!
* Der Grund liegt in dem begrenzten Wertebereich einer int-Variablen.
* Aus ähnlichem Grund tritt irgendwann auch bei Wahl eines long-Datentyps
* eine Wertebereichs-Überschreitung auf.
*
* Die Wahl des Datentyps double für die Summe ist also in jedem Fall ratsam,
* da bei einem double keine Wertebereichs-Überschreitung auftreten kann!
*/
// 2. Versuch: Berechnung der 1. Summe der Aufgabe mit einem double-Datentyp.
double s2 = 0; // Initialisierung der double-Summe auf 0 !!

for (int k = 1; k <= n; k++) {
s2 += k*k;
}
fenster.println("double-Summe 1 bis n von k²: " + s2);

/* Auch dieser Algoritmus hat ein Problem, das man erkennt, wenn man die
* Summe für n = 46340 und n = 46341 berechnet. Obwohl die Summe größer werden
* müsste, ist sie für n = 46341 kleiner!!???!!!???
*
* Der Grund liegt wieder in einer Wertebereichsüberschreitung. Diesmal ist der
* Summand k*k schuld. Um k*k zu berechnen wird eine int-Arithmetik angewandt,
* denn k ist ein int. Demzufolge ist das Ergebnis von k*k ein int. Jedoch lässt
* sich der Wert 46341² nicht mehr in einem int speichern, er wird sogar als
* negative Zahl interpretiert. Dadurch wird etwas Falsches zur Summe s2 aufaddiert.
*
* Die Lösung für dieses Problem ist das Erzwingen einer Gleitkommaarithmetik bei
* der Berechnung von k²!
*/
// 3. Versuch: Berechnung der 1. Summe der Aufgabe mit einem double-Datentyp.
double s3 = 0; // Initialisierung der double-Summe auf 0 !!

for (int k = 1; k <= n; k++) {
s3 += (double)k*k;
}
fenster.println("double-Summe 1 bis n von k²: " + s3);

fenster.println();
} // Ende true-Schleife
} // Ende main
}
[/Java]


Weiß jemand einen Rat? Ist ziemlich dringend....
 
Zuletzt bearbeitet von einem Moderator:
schreibe...
public static void main( String args[] ) throws Exception {

ich erklärs gar nicht weiter... google liefert sicher 3600 erklärungen dafür...
 
Schreibste eben folgendes:

Java:
do {
        try {n = fenster.readInt("n: ");}
        catch (Exception e) {e.printStackTrace();}
} while (n < 1);
 
Super vielen Dank schonmal ... aber ich hab da gleich noch eine Frage ... Bei einigen Klassen sagt er mir ( uns ) auch Fehler der eigentlich doch gar nicht da ist ( immerhin sehen wir 3 keinen ...)

Compiler schimpft : illegal start of expression

Bei : public static double f0 (double x){ (Zeile 51)

Aber unserer Meinung nach ist alles richtig,....
wo liegt unser Fehler?


Java:
/**
 * Klasse Tangentenverfahren.
 * 
 * @author (Draheim) 
 * @version (01.12.2009)
 */

public class Tangentenverfahren
{
static double a3, a2, a1, a0;
public static void main (String[] args)throws Exception {

double x0, xn, xn1, f0,f1,f2;
short stellen;
boolean genauigkeit;
JConsole fenster = new JConsole("Tangentenverfahren");

try{

   a3= fenster.readDouble (" Bitte ersten Wert x^3 eingeben: ");
   a2= fenster.readDouble (" Bitte zweiten Wert x^2 eingeben: ");
   a1= fenster.readDouble (" Bitte dritten Wert x^1 eingeben: ");
   a0= fenster.readDouble (" Bitte vierten Wert x^0 eingeben: ");
   x0= fenster.readDouble (" Bitte Startwert eingeben: "); 
   stellen= fenster.readShort(" Bitte Stellen nach dem Komma eingeben: "); 

   //Konvergenzbedingung
   
   if( Math.abs((f0(x0)*f2(x0))/ Math.pow(f1(x0),2))<1.) {
   
       //Iterationsschleife
    do{ xn= (xn1-((f0(xn1)) / (f1(xn1))));
        genauigkeit = Math.abs (xn1 -xn) > Math.pow(10.,-(stellen+1));
        
        xn1=xn;
    }
    while (genauigkeit);    
    fenster.println();
    fenster.println("Die Nullstelle beträgt :  "  );
    fenster.println(x0,10,stellen);
    fenster.println("Der Funktionswert beträgt :  " );
    fenster.println(f0(xn1));
}
    else{  
        fenster.println (" Wert zu ungenau!");
    }
        fenster.println ("Programmende");
   
  
   public static double f0 (double x){
   return f0= a3 * Math.pow(x,3) + a2 * Math.pow(x,2) + a1 * X + a0;
}
    public static double f1 (double x){
   return f1= 3 * a3 * Math.pow(x,2) + 2 * a2 * x + a1;
}
    public static double f2 (double x){
   return f2= 6 * a3 * x + 2 * a2;
   
} 
}
 catch (InterruptedException ie) {}
}

}
 
Du definierst innerhalb deiner static main haufenweise anderer static main-Methoden. Und das ganze dann auch noch innerhalb eines try-Blockes, der in der main steht... das geht so nicht und ist auch nicht der Sinn der Sache eines try-Blockes...
Mach mal deine Einrückungen richtig, dann siehst du besser, welche Klammer wo hin gehört.
 
Methoden schreibt man nicht in andere Methoden... da fehlen ein paar Klammern... ich würd das einfach mal sauber einrücken...



das nenn ich ja mal selbstvertrauen ;-)

Ja aber welche klammern fehlen denn da?

Das Ding ist die sachen hab ich ja nicht selbst gemacht die Klassen liefen bei anderen Studenten ja einwandfrei und jetzt meckert der rum....

(Wir) verstehen ja selber nicht was da gemacht wurde....

wie muss ich denn so eine Methode schreiben dass sie keine Main Methode ist!?
 
Nett aber wir bräuchten schon JETZT Hilfe.... Das Buch kenne ich wohl aber ich kann es mir im Moment leider nicht leisten....
 
naja ihr habs falsch zusammen kopiert..

Code:
....
fenster.println ("Programmende");
   
  
   public ....
ftw!

so habs mirs kurz in eclipse rein kopiert.. sorry da sind 5 grobe fehler drinnen.. da passt überhaupt nix...
formatiert das mal sauber und richtet es soweit ihr könnt her... dan hilft euch sicher jemand...
 
das Buch ist umsonst online komplett
und Zeitangaben helfen grundsätzlich nie, vielleicht mit Glück doch
 
so ausnahmsweise...
Aber wenn ich mit einem von euch mal in einem wichtigen Projekt zusammenarbeiten muss .. gnade im Gott! ;-)

Java:
public class Tangentenverfahren {
    static double a3, a2, a1, a0;
    static double x0, xn, xn1, f0, f1, f2;

    public static void main(String[] args) throws Exception {

        
        short stellen;
        boolean genauigkeit;
        // JConsole fenster = new JConsole("Tangentenverfahren");

        a3 = fenster.readDouble(" Bitte ersten Wert x^3 eingeben: ");
        a2 = fenster.readDouble(" Bitte zweiten Wert x^2 eingeben: ");
        a1 = fenster.readDouble(" Bitte dritten Wert x^1 eingeben: ");
        a0 = fenster.readDouble(" Bitte vierten Wert x^0 eingeben: ");
        x0 = fenster.readDouble(" Bitte Startwert eingeben: ");
        stellen = fenster.readShort(" Bitte Stellen nach dem Komma eingeben: ");

        // Konvergenzbedingung

        if (Math.abs((f0(x0) * f2(x0)) / Math.pow(f1(x0), 2)) < 1.) {

            // Iterationsschleife
            do {
                xn = (xn1 - ((f0(xn1)) / (f1(xn1))));
                genauigkeit = Math.abs(xn1 - xn) > Math.pow(10., -(stellen + 1));

                xn1 = xn;
            }
            while (genauigkeit);
            fenster.println();
            fenster.println("Die Nullstelle beträgt :  ");
            fenster.println(x0, 10, stellen);
            fenster.println("Der Funktionswert beträgt :  ");
            fenster.println(f0(xn1));
        }
        else {
            fenster.println(" Wert zu ungenau!");
        }
        fenster.println("Programmende");
    }

    public static double f0(double x) {
        f0 = a3 * Math.pow(x, 3) + a2 * Math.pow(x, 2) + a1 * x + a0;
        return f0;
    }

    public static double f1(double x) {
        f1 = 3 * a3 * Math.pow(x, 2) + 2 * a2 * x + a1;
        return f1;
    }

    public static double f2(double x) {
        f2 = 6 * a3 * x + 2 * a2;
        return f2;

    }

}
 
Ich habe die Klassen so von einem Kommolitionen bekommen. Bei ihm laufen sie ich habe mir das ganze Projekt gemopst da habe ich nix dran selber geschrieben oder verändert.

Das Problem ist einfach : wir müssen uns Java selber beibringen und niemand erklärt uns wie das geht . In Info 1 haben wir alles über die Neumannsche Rechnerarchitektur gelernt und wie man 0 und 1 sen anders schreibt.
Jetzt werden wir in Info2 vor einen PC gesetzt und sollen Programmieren.

Der Prof erzählt andauernd was von seinem Imaginären Hund Bello so 1 1/4 stunden lang dann jagt er dateien durch die wir mit dem Compiler bearbeiten sollen ( so in einer viertel stunde )und so jetzt können wir alle java...und sind auf uns alleine gestellt.....
Sind echt verzweifelt weil die klausur immer näher rückt. Gute Nacht Lektüre ist schon Java für Dummies ....
 
Mir kommen die Tränen... wir mussten uns mit Assambler und C rumschlagen... seit froh das ihr einen compiler habt dir euch lesbare fehlermeldungen postet...

Mir ist es ja egal was ihr im Studium treibt, aber ich werd so zornig wenn ich sehen wie schlecht die Absolventen sind mit denen wir in zukunft zusammen arbeiten müssen....

Wer mit der Fehlermldung "unreported exception java.lang.exception must be caught or declared to be thrown" und Google nix anfangen kann, der soll meiner Meinung nicht Informatik studieren... sorry
 
Wer mit der Fehlermldung "unreported exception java.lang.exception must be caught or declared to be thrown" und Google nix anfangen kann, der soll meiner Meinung nicht Informatik studieren... sorry
Ist ja nicht so als ob man in anderen Berufen/Studiengängen selbstständiges Problemlösen und eigenständiges Lernen nicht braucht...

Das Problem ist einfach : wir müssen uns Java selber beibringen und niemand erklärt uns wie das geht
Oh buhu, willkommen an einer Universität. Hast du dir vorher noch nie selbst was beigebracht?
 
Also wenn irgendein Compiler auf der Welt den Schritt, den du gestern 17:04 geschrieben hast, tatsächlich übersetzt, dann seh ich schwarz...
Nimmst du zum Erstellen deiner Codebausteine eine IDE oder die Konsole? Rück einfach mal im Notepad zusammengehörife Codeteile ein, dann siehst du, welche Klammer wo hin muss...
 

Zurück
Oben