break-anweisung

Status
Nicht offen für weitere Antworten.

D.Licious

Mitglied
hallo!

ich hab folgendes problem:

und zwar ist dies ein programm das die fakultät berechnet, jedoch steht die fakultätsberechnung in einer eigenen

methode. ab der zahl 13 soll der compiler eine "Fehlermeldung" ausgeben, da diese zahl für Int-Werte den

Max.Integer.Value übersteigt(habe vergessen die doubles durch int zu ersetzen, lasst euch dadurch nicht stören).

mein problem ist dies:

bis 12 geht alles noch glatt, das system rechnet ganz normal die fakultät aus. jedoch ab 13 gibt er mir eine "Fehler-

meldung und rechnet dann noch dazu das ergebnis aus(was er ja aber nicht soll, weil er sich ja hier verrechnet).

er soll aber nur eine "Fehlermeldung" ausgeben. muss ich vielleicht noch irgendwo eine break-anweisung setzen?!

vielen dank schon mal im voraus.

gruß daniel



Code:
import java.io.*;
    import java.*;
    public class Testat3c {
    
    /** Creates a new instance of Main */
    
        public Testat3c() {
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args)throws IOException {
        // TODO code application logic here
  
   
  double a, b, k, m;
   
   while (true){
    BufferedReader eingabe;
    eingabe     = new BufferedReader (new InputStreamReader(System.in));
   
    
    System.out.println("Bitte geben Sie eine Zahl ein:");
    
    m   =Double.valueOf(eingabe.readLine()).doubleValue();
   
    
    
    
    a=fakultaet(m);
    
   System.out.println("Die Fakultät von " + m + " beträgt " + a +"." );
   }}
  static double fakultaet (double m){
   double a, b, k, div, max;
     max= Integer.MAX_VALUE;
     a=1;
     k=1;
    
    while (k<=m)
   
      {a  =a*k;
       div= max/ k++;
      if (div <=a)
                {
                    System.out.println("Fehler:"+ m + " ist zu groß. Bitte genben Sie eine neue Tahl ein.");
                  break; 
                }
    }         
  return a;   
   }
    }
 

DP

Top Contributor
mussu mal mit try/catch arbeiten. die fehlermeldung entsprechend abfangen und reagieren... ist nicht so wild :)
 

D.Licious

Mitglied
hab noch nie mit try/catch gearbeitet. wir haben erst seit diesem jahr programmieren1. kannst du mir vielleicht ein bisschen genauer helfen?! wäre sehr nett!
 

DP

Top Contributor
mal als beispiel:

int i = 0;

while(true){
try{
i++;
System.out.println(i);
}
catch(Exception e){
System.out.println("kein int mehr, zahl zu groß");
}
}
 

D.Licious

Mitglied
danke für die idee werde es morgen auf jeden fall mal ausprobieren, aber das muß doch auch irgendwie einfacher zu regeln sein?!
 
B

bygones

Gast
wenn du weißt, dass es ab 13 Probleme gibt. Frag doch einfach in der fakultäts Methode ab, was für eine Zahl eingegeben wurde.

Ist sie höher als 12 gibst du irgendeinen Dummy Wert zurück (-1) oder wirfst eine IllegalArgumentException z.b.

Im 2. Fall siehe DPs Beispiel
Im 1. Fall musst du halt noch eine if abfrage im Hauptprogramm machen, ob der rückgabe wert anders ist als -1.Wenn doch dann gibst du aus, dass die eingegebene Zahl zu groß ist
 

Bleiglanz

Gesperrter Benutzer
try catch geht nicht, weil ein integer überlauf keine ausnahme auslöst

du hast ein break, mit dem du einfach aus der while schleife aussteigst, natürlich gibt er dann einfach beim return das falsche ergebnis aus

du solltest lieber statt "break" eine ArithmeticException werfen (mit throw)

oder gleich die 13 fest reincodieren, ist ja eine echte Konstante
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben