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
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;
}
}