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

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

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

Δημοσίευσηαπό clepto » 12 Νοέμ 2011, 01:48

είμαι αρχάριος στην 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
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό clepto » 12 Νοέμ 2011, 01:56

μου έμεινε μόνο ένα σφάλμα τώρα,
Κώδικας: Επιλογή όλων
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
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό M.Jackson » 12 Νοέμ 2011, 10:51

Η συνθήκη στην java είναι με διπλο = δηλαδή ==
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

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

Δημοσίευσηαπό clepto » 12 Νοέμ 2011, 11:17

έχω φτάσει εδώ τώρα
Κώδικας: Επιλογή όλων
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
Αποτυχία μεταγλώτισης.
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό M.Jackson » 12 Νοέμ 2011, 15:56

Θα σε συμβούλεβα να έκανες 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 σου.
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

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

Δημοσίευσηαπό clepto » 12 Νοέμ 2011, 16:16

έχω τόσο καιρό να ασχοληθώ με προγραμματισμό που έχω ξεχάσει και τα βασικά ακόμα!

εξήγησε μου λίγο γιατί κάνουμε import το java.io.*;
και αυτό BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
και αυτο throws Exception
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό M.Jackson » 12 Νοέμ 2011, 16:21

imprort java.io είναι η βιβλιοθήκη της javas για το input/output αρα εχουμε καποιες εντολες για input
To BufferedReader ειναι ενα απο αυτα και με αυτο φτιαχνουμε ενα object input το οποιο με την εντολη .readLine() διαβαζουμε απο την γραμμη δεδομενα... και με το parseInt το κανουμε numeric...
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

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

Δημοσίευσηαπό M.Jackson » 12 Νοέμ 2011, 16:22

επισης αυτο ειναι java οχι javascript δεν εχουν καμοια σχεση
Άβαταρ μέλους
M.Jackson
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 1053
Εγγραφή: 28 Μάιος 2010, 19:06
Εκτύπωση

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

Δημοσίευσηαπό clepto » 12 Νοέμ 2011, 16:53

εννοώ 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)
1 Γνώσεις Linux: Ικανοποιητικό ┃ Προγραμματισμού: Ικανοποιητικό ┃ Αγγλικών: Ικανοποιητικό
2 Ubuntu 13.04 raring 3.8.0-30-generic 64bit (en_US.UTF-8, Unity ubuntu), Ubuntu 3.8.0-19-generic, Windows 7
3 Intel Core i7-3537U CPU @ 2.00GHz ‖ RAM 3840 MiB ‖ ASUS K56CB
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] {i915}
5 wlan0: Atheros Inc. AR9485 Wireless Network Adapter [168c:0032] (rev 01) ⋮ eth0: Realtek RTL8111/8168 PCI Express Gigabit Ethernet controller [10ec:8168] (rev 0a)
clepto
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4102
Εγγραφή: 07 Ιαν 2010, 16:27
Τοποθεσία: Πάτρα
Launchpad: christriant
IRC: Clepto
Εκτύπωση

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

Δημοσίευσηαπό simosx » 12 Νοέμ 2011, 17:28

@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
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι