Σελίδα 1 από 26

Τα πάντα για την java

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 01:48
από clepto
είμαι αρχάριος στην java, βασικά τώρα έχω αρχίσει και διαβάζω και έχω γράψει ένα script που δέχεται 3 arguments και αν το args[2] είναι + προσθέτει τα args[1], args[3] αλλά ο compiler χτυπάει...
Κώδικας: Επιλογή όλων
class JCalc {

   public static void main (String args[]) {
      
      if (args[2] = +) {
         int result = (args[1] + [args[3]);
      }
         
   System.out.println(result);

το σφάλμα από τον compiler είναι
Κώδικας: Επιλογή όλων
chris@chris-Aspire-5732Z ~/Έγγραφα $ javac JCalc.java JCalc
JCalc.java:5: illegal start of expression
      if (args[2] = +) {
                     ^
JCalc.java:6: illegal start of expression
         int result = (args[1] + [args[3]);
                                 ^
JCalc.java:6: ';' expected
         int result = (args[1] + [args[3]);
                                  ^
JCalc.java:6: illegal start of expression
         int result = (args[1] + [args[3]);
                                      ^
JCalc.java:6: ';' expected
         int result = (args[1] + [args[3]);
                                       ^
JCalc.java:6: illegal start of expression
         int result = (args[1] + [args[3]);
                                        ^
JCalc.java:6: ';' expected
         int result = (args[1] + [args[3]);
                                         ^
JCalc.java:9: reached end of file while parsing
   System.out.println(result);
                              ^
8 errors

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 01:56
από clepto
μου έμεινε μόνο ένα σφάλμα τώρα,
Κώδικας: Επιλογή όλων
javac "JCalc.java" (στο φάκελο: /home/chris/Έγγραφα)
JCalc.java:11: reached end of file while parsing
}
^
Αποτυχία μεταγλώτισης.
1 error


edit:
το έλυσα και αυτό και μου βγήκαν άλλα τώρα :P

Κώδικας: Επιλογή όλων
javac "JCalc.java" (στο φάκελο: /home/chris/Έγγραφα)
JCalc.java:5: unexpected type
Αποτυχία μεταγλώτισης.
required: variable
found   : value
      if ("args[2]" = "+") {
          ^
JCalc.java:6: incompatible types
found   : java.lang.String
required: int
         int result = "args[1] + [args[3]";
                      ^
JCalc.java:9: cannot find symbol
symbol  : variable result
location: class JCalc
   System.out.println(result);
                      ^
3 errors

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 10:51
από M.Jackson
Η συνθήκη στην java είναι με διπλο = δηλαδή ==

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 11:17
από clepto
έχω φτάσει εδώ τώρα
Κώδικας: Επιλογή όλων
class JCalc {

   public static void main (String args[]) {
      
      if ("args[2]" == "+") {
         int result = args[1] + args[3];
      }
         
   System.out.println(result);
   
}
}

και μου δίνει
Κώδικας: Επιλογή όλων
chris@chris-Aspire-5732Z ~/Έγγραφα $ javac JCalc.java JCalc
error: Class names, 'JCalc', are only accepted if annotation processing is explicitly requested
JCalc.java:6: incompatible types
found   : java.lang.String
required: int
         int result = args[1] + args[3];
                              ^
JCalc.java:9: cannot find symbol
symbol  : variable result
location: class JCalc
   System.out.println(result);
                      ^
3 errors

έχω δηλώσει το result int, πρέπει να δηλώσω και τα args;


edit: έχω γράψει αυτό
Κώδικας: Επιλογή όλων
class JCalc {

   public static void main (String args[]) {
      
      int firstnumber = Integer.parseInt(args[1]);
      int secondnumber = Integer.parseInt(args[3]);
      
      if ("args[2]" == "+") {
         int result = firstnumber + secondnumber;
      }
         
      System.out.format("%d", result);
   
}
}

και παίρνω
Κώδικας: Επιλογή όλων
javac "JCalc.java" (στο φάκελο: /home/chris/Έγγραφα)
JCalc.java:12: cannot find symbol
symbol  : variable result
location: class JCalc
      System.out.format("%d", result);
                              ^
1 error
Αποτυχία μεταγλώτισης.

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 15:56
από M.Jackson
Θα σε συμβούλεβα να έκανες read με αυτό τον τρόπο που κάνω εγώ
Κώδικας: Επιλογή όλων
import java.io.*;
public class program{
public static void main (String args []) throws Exception{

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));

int firstnumber = Integer.parseInt(input.readLine());
int secondnumber = Integer.parseInt(input.readLine());

String operator;
int result = 0;
operator = input.readLine();
if (operator == "+")
{
    result = firstnumber + secondnumber;
}
         
   System.out.println(result);
}
}


Στον παλιό σου κώδικα (αν και εχει αρκετο καιρο να δουλεψω με τα args) γιατί βάζεις args[1] μέσα στο IF σου; Θα τα καλείς με την ματαβλητή σου που αποθηκευσες μεσα δηλαδη το firstnumber κτλ. Επίσης δεν βλέπω κάπου να διαβάζεις το πρόσιμο το οποίο ρωτάς στο IF σου.

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 16:16
από clepto
έχω τόσο καιρό να ασχοληθώ με προγραμματισμό που έχω ξεχάσει και τα βασικά ακόμα!

εξήγησε μου λίγο γιατί κάνουμε import το java.io.*;
και αυτό BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
και αυτο throws Exception

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 16:21
από M.Jackson
imprort java.io είναι η βιβλιοθήκη της javas για το input/output αρα εχουμε καποιες εντολες για input
To BufferedReader ειναι ενα απο αυτα και με αυτο φτιαχνουμε ενα object input το οποιο με την εντολη .readLine() διαβαζουμε απο την γραμμη δεδομενα... και με το parseInt το κανουμε numeric...

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 16:22
από M.Jackson
επισης αυτο ειναι java οχι javascript δεν εχουν καμοια σχεση

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 16:53
από clepto
εννοώ java script όπως λέμε bash script :P
επειδή εγώ το θέλω να δουλεύει με command line arguments πως θα γράψω τον κώδικα;
αντικατέστησα το input.readline με args[], έκανα compile αλλά όταν τρέχω
Κώδικας: Επιλογή όλων
java JCalc 5 + 5

παίρνω
Κώδικας: Επιλογή όλων
Exception in thread "main" java.lang.NumberFormatException: For input string: "+"
   at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
   at java.lang.Integer.parseInt(Integer.java:470)
   at java.lang.Integer.parseInt(Integer.java:514)
   at JCalc.main(JCalc.java:7)

Re: προβλημα με java script

ΔημοσίευσηΔημοσιεύτηκε: 12 Νοέμ 2011, 17:28
από simosx
@clepto: Δες στο https://github.com/simos/JCalc
Έκανα μερικές διορθώσεις στον κώδικα και μπορείς να τις δεις μελετώντας τα commits.
Για παράδειγμα, δες https://github.com/simos/JCalc/commit/1 ... 2b08278033

Για να λάβεις αντίγραφο του κώδικα, εκτελείς
Κώδικας: Επιλογή όλων
sudo apt-get install git
git clone git://github.com/simos/JCalc.git
cd JCalc
make