Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Fakultäten in Java Programmieren

kann mir jemand helfen ich habe folgendes problem!
ich muss ein programm programmieren in java mit dem ich die fakultäten von positiven Zahlen(die man eingeben kann) berechnen kann.
und so sieht mein programm aus...


import java.io.*;
class ..... {
   public static void main (String[]argum) throws IOException{
     int Zahl1, Zaehler, Summe;                                            
     BufferedReader din=new BufferedReader(new InputStreamReader( System.in));    
     Zahl1=Integer.parseInt(din.readLine());                                    
     Summe=0;  
     
     for (Zaehler=Zahl1-1; Zaehler<=1; Zaehler=Zaehler--) {
          Summe=Summe+Zahl1;
                                                               
     System.out.println(Zahl1+"*"+Zaehler+"="+Summe);  

                                             
      }  
     }                                          
   }              

kann mir jemand erklären wie ich das richtig programmieren kann?


Antworten zu Fakultäten in Java Programmieren:

Sorry, pass im Unterricht etwas mehr auf dann klappt das auch mit den Programmieraufgaben...

PS: Was zum Teufel hat Fakkultät mit Addition zu tun?

Genau,

und davon abgesehen:

Zitat
...die fakultäten von positiven Zahlen(die man eingeben kann) berechnen kann....

Ooooooooooooooookay (mal abgesehen davon dass die Fakultät für negative Zahlen sowieso nicht definiert ist)

Zitat
Zahl1=Integer.parseInt(din.readLine());                                  
    Summe=0;
   
    for (Zaehler=Zahl1-1; Zaehler<=1; Zaehler=Zaehler--) {
          Summe=Summe+Zahl1;

Du weisst schon dass für positive Zahlen Zahl1 (s.o.) das da oben eine Endlosschleife ergibt?!?!

...

weiter will ich auch gar net ausholen, weil komm gerade von einer echt anstrengenden Party. Ausser vll:

Zitat
PS: Was zum Teufel hat Fakkultät mit Addition zu tun?

Ja, was eigentlich (mal abgesehen von davon dass sich eine Multiplikation immer durch mehrere Additionen ersetzen lässt ;))

mfG
der Horst!


Ok, ok,

man, ich werde echt alt ...

eine Endlosschleife ergibt das natürlich NICHT! (hab den ZahlenRING nicht bedacht ... )

Ich wage sogar zu behaupten, dass die Schleife

Zitat

for (Zaehler=Zahl1-1; Zaehler<=1; Zaehler=Zaehler--)


für die allermeisten positiven Zahlen in Zahl1 gar nicht erst ausgeführt wird...

Aber für die Zahlen, für die es ausgeführt wird ist es wiederum eine Endlosschleife ( na, 123, wo liegt der Fehler? ;-) ).

Zitat
eine Endlosschleife ergibt das natürlich NICHT! (hab den ZahlenRING nicht bedacht ... )
WTF ist der ZahlenRING??? Also wirklich: Wenn man es schon besser wissen will, dann doch bitte richtig!

Mon,

man war das spät gestern ;)

Und es ergibt KEINE Endlosschleife (für die Zahlen für die diese Schleife überhaupt ausgeführt wird natürlich).

Der anschauliche Beweis erfolgt hier zwar in C, aber das sollte in Java prinzipiell nicht anders aussehen:

#include <stdio.h>

int main()
{
   int Zaehler;
   int Zahl1 = 1;


   for (Zaehler=Zahl1-1; Zaehler<=1; Zaehler=Zaehler--)
   {
      ;
   }

   printf( "Wert: %d\n", Zaehler );

   return 0;
}

Frage an ,,,,,: Warum besitzt die Integer Variable (32 Bit) Zaehler nach Ausführung der Schleife den Wert 2147483647. Das ist doch nicht etwa MAXINT?!?! Und das obwohl wir doch innerhalb der Schleife nur dekrementieren *grusel*.

;)
Mon,

man war das spät gestern ;)

Und es ergibt KEINE Endlosschleife (für die Zahlen für die diese Schleife überhaupt ausgeführt wird natürlich).

Scheint Dir ja heute noch nicht besser zu gehen...

Um es kurz zu machen: Dein Programm terminiert nicht ::)

Aber ein kleiner Denkanstoss: Was genau macht
Zaehler--
???

Und wie wird es in der Schleife verwendet ???

Doch es terminiert, selbst ausprobiert mit MSVC++ 6.0. Es wird zwar zunächst der Variable Zaehler der Inhalt der Variablen Zaehler zugewiesen (also sich selbst) und erst DANACH dekrementiert, aber da es sich um ein und dieselbe Variable handelt wird diese auch korrekt dekrementiert.

Schreib einen Bug-Report an Microsoft.

Operator -- sollte den Wert dekrementieren und den vorherigen Wert als Rückgabewert zurückgeben. Dann erfolgt die Zuweisung.

IMHO wäre alles andere ein Bug.

Mit gcc terminiert es nicht 8)

Folgendes Java Programm:

public class Bar {

   public static void main(String[] args) {
      int Zaehler = 0;
      System.out.println( Zaehler + "\n" );
      Zaehler = Zaehler++;
      System.out.println( Zaehler +"\n ");
   }
}

gibt als Ausgabe:
0
0

 :P

« Pfadvariable in vbscript oder javascriptLAN mit C »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Grundstrich
Der Begriff des Grundstrichs im Bereich der Typografie, bezeichnet den senkrechten Strich der Buchstaben. Bei Schriftarten mit variabler Strichstärke, wie zum Beispi...

Haarstrich
Der Begriff Haarstrich stammt aus dem Bereich der Typographie. Bei Schriften, wie zum Beispiel der Antiquaschrift mit unterschiedlichen Strichstärken, wird zwischen ...

Java
Java ist eine von der Firma SUN entwickelte Programmiersprache. Da Java unabhängig vom Betriebssystem läuft, kann ein einmal geschriebenes Programm auf allen Ja...