ERLEDIGT
JA
JA
ANTWORTEN
6
6
ZUGRIFFE
294
294
EMPFEHLEN
-
Wenn ich als eine Zahl eingebe wird nie etwas ausgegeben. Ich kann einfach nicht nachvollziehen warum.
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
public class fakultaet { public static void main(String[] args) { System.out.println("n?"); try { BufferedReader input=new BufferedReader (new InputStreamReader (System.in)); String nn; nn = input.readLine(); int n = Integer.parseInt(nn); int[] fac = new int[n]; fac[0] = 1; for (int h =1; h<= n; h++) { fac[h] = fac[h-1] * h; } System.out.print(fac[n]); } catch (Exception ex) { ex.printStackTrace(); } } }
Geändert von sepp75 (11.08.11 um 18:39 Uhr)
-
11.08.11 18:04 #2
- Registriert seit
- Jun 2009
- Beiträge
- 870
Hallo und willkommen im Forum
1. bereits beim kompilieren müsste eine Fehlermeldung erscheinen, dass die variable 's' in Zeile 14 nicht gefunden werden kann
2. Exceptions sind dafür da, dass sie dem Entwickler helfen, Fehler zu finden. Deswegen schreibt man in einen catch-Block üblicherweise
, das bewirkt, dass die Fehlermeldung auf der Konsole ausgegeben werden.Code java:1
ex.printStackTrace();
3. Klassennamen schreibt man üblicherweise groß
4. in Zeile 10 erzeugst du ein int[], das ist aber zu klein!
5. warum speicherst du die Ergebnisse zwischendurch? Brauchst du die Zwischenergebnisse? Sonst reicht eine temporäre Variable!
EDIT:
Bei n>=12 bekommst du einen Überlauf, weil der Wertebereich von int zu klein ist.
Würdest du den Typ von fac auf long ändern, kann es immerhin bis n <=20 funktionieren. Willst du größere Fakultäten berechnen, solltest du dir java.math.BigInteger anschauen.
Für ungenauere Berechnungen reicht auch double (statt int), das geht dann bis n<=170Geändert von genodeftest (11.08.11 um 18:18 Uhr)
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
-
Danke für die schnelle Antwort
Zu 1. Ich habe den Code auf das wichtigste minimiert, ich muss wohl das "int s;" und "s = h-1" gelöscht haben.
Zu 2. Wusste ich nicht. Danke für den Tipp
Zu 3. Wusste ich auch nicht. (Ist eigentlich ja nicht so wichtig)
Zu 4. Werde wohl kaum ein grösseres Array brauchen. Aber werde es trotzdem mal noch ändern.
Zu 5. Ja die Zwischenergebnisse brauche ich noch.
Es kommt jetzt die Fehlermeldung
Code java:1 2
java.lang.ArrayIndexOutOfBoundsException: 3 at fakultaet.fakultaet.main(fakultaet.java:25)
Ich habe einfach mal "double" statt "int" genommen, das java.math.BigInteger werde ich erst später noch ausprobieren.Geändert von sepp75 (11.08.11 um 18:59 Uhr)
-
Hi
Das bedeutet, dass du auf mehr Elemente zugreifst, als ein Array hat.
Wenn du zB. ein
machst, hat das schon 4 doubles, aber so nummeriert:Code java:1
double[] abc = new double[4];
abc[0] abc[1] abc[2] und abc[3]
In deiner for-Schleife greifst du aber auf
abc[1] abc[2] abc[3] und abc[4]
zu. beim [4] kommt dann die Exception.
Gruß
-
Danke für den Tipp ich dachte eben, dass wenn man einen Array
so definiert man danach auf abc[0] abc[1] abc[2] abc[3] und abc[4] zugreifen kann.Code java:1
double[] abc = new double[4];
In dem Fall ist das Problem gelöst.
-
11.08.11 20:08 #6SE Tutorials.de Gastzugang
Wenn das Problem gelöst ist makiere den Thread bitte als erledigt.
-
11.08.11 20:15 #7
- Registriert seit
- Jun 2009
- Beiträge
- 870
Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
Ähnliche Themen
-
CUDA Werte werden falsch aus dem Speicher gelesen
Von Nimmer im Forum Sonstige SprachenAntworten: 1Letzter Beitrag: 29.01.11, 11:42 -
MYSQL Sonderzeichen werden in PHP falsch ausgegeben....
Von bernhardp im Forum PHPAntworten: 2Letzter Beitrag: 02.12.08, 14:40 -
VB6: Wochentagsname wird falsch ausgegeben
Von Kraah im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 04.05.08, 14:03 -
Werte werden falsch übergeben
Von lordofscotland im Forum PHPAntworten: 3Letzter Beitrag: 13.08.05, 20:03 -
filesize falsch ausgegeben
Von -Ener- im Forum PHPAntworten: 9Letzter Beitrag: 17.04.05, 09:29





Zitieren


Login





