THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Java => Topic started by: dim on November 09, 2005, 18:35:19 pm



Title: Code_problem
Post by: dim on November 09, 2005, 18:35:19 pm
Δε μου το τρέχει με καμία παναγία..
Το αντέγραψα από ένα βιβλίο, οπότε δε νομίζω να έχει λάθος..  :)
Code:
/**
 * This program computes the factorial of a number
 */
public class Factorial {                                 // Define a class
  public static void main(String[] args) {         // The program starts here
    int input = Integer.parseInt(args[0]);       // Get the user's input
    double result = factorial(input);               // Compute the factorial
    System.out.println(result);                     // Print out the result
  }                                                          // The main() method ends here

  public static double factorial(int x) {           // This method computes x!
    if (x < 0)                                             // Check for bad input
      return 0.0;                                         // If bad, return 0
    double fact = 1.0;                                // Begin with an initial value
    while(x > 1) {                                      // Loop until x equals 1
      fact = fact * x;                                  // Multiply by x each time
      x = x - 1;                                          // And then decrement x
    }                                                       // Jump back to start of loop
    return fact;                                         // Return the result
  }                                                         // factorial() ends here
}                                                           // The class ends here
__________ΜΝΜ ΛΑΘΟΥΣ__________

java.lang.ArrayIndexOutOfBoundsException: 0
   at Factorial.main(Factorial.java:4)
Exception in thread "main"

----------------------------------------------------------

Αν μπορεί κάποιος ας το τρέξει..


Title: Απ: Code_problem
Post by: dim on November 09, 2005, 18:53:47 pm
Και κάτι ακόμα..
Κάποια class που τα τρέχει ο jbuilder, όταν πάω να τα τρέξω από γραμμή εντολών, ενώ το javac γίνεται, όταν πάω να τα τρέξω μου βγάζει
Exception in thread "main" java.lang.NoClassDefFoundError

To έψαξα λίγο με search, αλλά δεν κατάλαβα τι γίνεται..


Title: Απ: Code_problem
Post by: Cyberkat on November 09, 2005, 21:15:29 pm
Στο πρώτο σου πρόβλημα, το λάθος είναι ότι δεν δίνεις ένα όρισμα.
Συγκεκριμένα η εντολή int input = Integer.parseInt(args[0]); σημαίνει ότι το πρόγραμμα περιμένει να του δώσεις έναν αριθμό για να υπολογίσει το factorial. Δηλαδή πρώτα κάνεις compile ως εξής javac Factorial.java. Και μετά για να το τρέξεις γράφεις java Factorial x, όπου χ ακέραιος. Για παράδειγμα java Factorial 5. Έτσι δούλεψε κανονικά σε εμένα, αλλά δεν έχω jbuilder.
Για το δεύτερο πρόβλημα, πρόσεξε μήπως τοποθετείς τα αρχεία σε κάποιο package. O jbuilder βρίσκει το package μόνος του. Στην γραμμή εντολών πρέπει να δώσεις ολόκληρο το path.
Ελπίζω να βοήθησα.


Title: Απ: Code_problem
Post by: JAs0n-X on November 09, 2005, 21:29:01 pm
Στο πρωτο με καλυψε η Κυβερνογατα.
Στο δευτερο (εφοσον τα Import και τα package τα εχεις βαλει σωστα) ισως φταιει το εξης...
οταν πας File->New->Class (η οτι αλλο βαζεις τσπ) εχει μια επιλογη για το ποιο θα ειναι το κυριο πακετο σου ...
εκει πρεπει να ειναι τικαρισμενο το java.lang.
Για δοκιμασε κ αυτο...

εναλλακτικα δοκιμασε να κανεις δεξι κλικ στο αρχειο (μεσα απο το jbuilder) και απο εκει Run.
(αντι δλδ να πατησεις το run που υπαρχει πανω)


Title: Απ: Code_problem
Post by: Cyberkat on November 09, 2005, 21:32:17 pm
Επίσης, παίζει πολύ σημαντικό ρόλο αν μόνο σε κάποια έχεις αυτό το πρόβλημα ή αν δεν μπορείς να τρέξεις τίποτε από την γραμμή εντολών. Στην δεύτερη περίπτωση μπορεί να μην έχεις κάνει σωστή παραμετροποίηση της classpath της java.


Title: Απ: Code_problem
Post by: Netgull on November 09, 2005, 21:36:09 pm
Με πρόλαβε η Cyberkat. Και μόνο σε μερικά να έχεις πρόβλημα, εάν αλλάζεις καταλόγους δοκίμασε να θέσεις το classpath κάθε φορά στον κατάλογο που έχεις τις compiled classes. Πχ java -classpath=C:\MyDir Factorial 5
(Για την ακριβή σύνταξη δεν παίρνω και όρκο δες το help της εντολής).