Forum / Grundlagen des Programmierens / 4. Hausübung

4. Hausübung

Hallo, Weiß irgendjemand wie man beim 1. Beispiel die Exception für Overflows machen kann?

import java.util.Scanner;
import java.util.InputMismatchException;
import java.lang.Exception;

public class Bsp1_1127390_4 {
   
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        try{
            System.out.println("Bitte geben Sie eine Zahl ein, von der Sie die Fakultät berechnen wollen!");
            int y = sc.nextInt();
        
            long z = fakultaet(y);
            System.out.println("Das Ergenbiss lautet:");
            System.out.println(y + "! = " + z);
            
        }catch(InputMismatchException e){
            System.out.println("Fehlerhafte Eingabe: " + e);
        }//2. Exception für Owerflows!!!!
        
    }
    public static long fakultaet (int x){
        if (x == 1){
            return 1;
        }else{
            return fakultaet(x-1)*x;
        }
    }
}
\n~~~
Martin ±0

Kann man die Threads vielleicht auch so stoppen?

   try{ alist.get(index).interrupt();} 
   finally{ threadCBox.removeItem(index);}\n~~~

Die sollten ja die selben Indizes im ArrayList und im ComboBox haben...

+noch eine Frage > Gibts eine Lösung fürs Problem mit Einfrieren nach Start des 1. Threads?
Ronny ±0

Kommt darauf an was du in dieComboBox schreibst, ich habe es so gemacht dass ich die ComboBox mit dem Thread Namen gefüllt habe, diesen beim Stoppen eingelesen und mit dem Objekt Waitingthread verglichen habe. Dann den entsprechenden Thread gestoppt.Aber so müsste es denke ich auch funktionieren wenn du den richtigen index zurück bekommst.

jo die Lösung gibts: habe aufs versehen den Thread mit .run() aufgerufen und nicht mit .start()

Oguzhan ±0

hat jemand das Beispiel 3 welches er/sie hochladen könnte?

Anna ±0

hallo :)

ich hab ne frage zum 1. bsp. ich kann es zwar ausführen, aber mir wird die zeile:

public static long Fakultät (int x){

als falsch angezeigt. warum?

Markus ±0

Du darfst im Code keine Umlaute verwenden, am einfachsten schreibst du "Fakultaet"

Wolfgang ±0

hallo :)

ich hab ne frage zum 1. bsp. ich kann es zwar ausführen, aber mir wird die zeile:

public static long Fakultät (int x){

als falsch angezeigt. warum?

Welchen Fehler meldet die IDE den ?

p.s. bei mir funktionieren Umlaute ^^

Anna ±0

bei mir gehts eig auch... :)

"illegal start of expression" --> steht dort! :)

Markus ±0

oh dann sry, wäre wohl auch zu einfach gewesen^^

Wolfgang ±0

hmm, das kann alles möglich sein. Kannst du einen Code-Auszug von der Methode posten, vielleicht lässt sich dann der Fehler leichter finden.

Ronny ±0

Kann es sein dass diese Methode im main steht????? würde den "illegal start of expression" erklären

Dieter ±0

So noch ein zwei Fragen: Bin ich der einzige bei dem bei den beispielen 3&4 manchmal Elemente im Fenster erst angezeigt werden wenn ich manuell die Größe von ihm verändert habe? Und beim ersten bsp bzgl der overflow exception: müssen wir die so einrichten dass das Programm dann von selbst wieder von vorne startet?

Claudia ±0
        Scanner sc = new Scanner(System.in);
        try{
            System.out.println("Bitte geben Sie eine Zahl ein, um die Fakultät dieser zu berechnen!");
            int y = sc.nextInt();
            
            long z = fakultaet(y);
            System.out.println("Das Ergebnis lautet:");
            System.out.println(y + "! = " + z);
        }catch(InputMismatchException e) {
            System.out.println("Fehlerhafte Eingabe: " + e);
        }catch(StackOverflowError er) {
            System.out.println("Overflow Error, bitte geben Sie eine kleinere Zahl ein"); 
            
        }
        public static long fakultaet(int x)
            if (x==1) {
                return 1;
            }else{
                return fakultaet(x-1)*x;
            }
        }
    }\n~~~

Kann mir bitte wär sagen was falsch ist? Also mir unterwellts immer das public static long fakultaet!
Martin ±0

Hallo Du hast da ein paar Fehler bei den Klammern Hier der korrigierte.

        Scanner sc = new Scanner(System.in);
        try{
            System.out.println("Bitte geben Sie eine Zahl ein, um die Fakultät dieser zu berechnen!");
            int y = sc.nextInt();
            
            long z = fakultaet(y);
            System.out.println("Das Ergebnis lautet:");
            System.out.println(y + "! = " + z);
        }catch(InputMismatchException e) {
            System.out.println("Fehlerhafte Eingabe: " + e);
        }catch(StackOverflowError er) {
            System.out.println("Overflow Error, bitte geben Sie eine kleinere Zahl ein"); 
            
        }
    }
        public static long fakultaet(int x) {
            if (x==1) {
                return 1;
            }else{
                return fakultaet(x-1)*x;
            }
        }
    
}
\n~~~


Mfg
Anton ±0

Könnte jemand bitte Bsp 4 hochladen?

Martin ±0

so.. auf den wunsch hin das bsp 4.. kritik wieder erwünscht! ansonsten.. aufpassen teilweise vom programm automatisch erstellter code.. viel spaß ;)

Sorry, die Kommentarfunktion ist geschlossen.