THMMY.gr

Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα => Java => Topic started by: Axel on November 15, 2004, 18:08:53 pm



Title: Γενικά
Post by: Axel on November 15, 2004, 18:08:53 pm
Προσπαθω να διαβασω εναν απλο ακεραιο απο την κονσολα χρησιμοποιωντας τη Java. ομως αλλο του δινω εγω και αλλο εκτυπωνει. Οριστε ο κωδικας:

import java.io.*;

public class ConsoleInput {
  public static void main(String[] args) throws IOException {
   try {
    System.out.print ("Type an integer: ");
    int val = System.in.read();  
    System.out.println ("You typed: " +val);
   }
   catch (IOException e) {  
    System.out.println ("IOException: " +e);
   }  
  }
}

Τι κανω λαθος;


Title: Re: Γενικά
Post by: gfloros on November 15, 2004, 18:37:05 pm
import java.io.*;

public class ConsoleInput {
   public static void main(String[] args) throws IOException{
String N ="";
int n=0;
try {
System.out.println ("Type an integer: ");
BufferReader in = new BufferReader(new InputStreamReader(System.in));
N=in.readLine();
}
catch (IOException e) {
System.out.println ("An I/O error occured");
}
try {
n=Integer.parseInt(N.trim());
}
catch (NumberFormatException e) {
System.out.println ("An I/O error occured");
}
}
}

To parapanw apla diabazei ton arithmo kai ton apothikeyei sth metablhth n.
Genika sth Java (an thymamai kala) mporeis na diabaseis mono string. Ayto kanoume kai parapanw. Meta ayto to string to epeksergazesai katallhla (kobeis, rabeis) kai to kaneis oti thes. Sthn dikh mas periptwsh to kanoume int me thn parseInt.
Elpizw na boithisa
Flo



Title: Re: Γενικά
Post by: Axel on November 16, 2004, 01:44:30 am
Thanks για τη βοηθεια Γιωργο. Ο compiler μου εμφανιζε λαθη στον κωδικα σου, ωστοσο καταλαβα πως να το κανω:

import java.io.*;

public class IntegerInput {
 public static void main(String[] args) throws IOException {
  String userInput = "";
   int n=0;
  try {
   BufferedReader reader = new BufferedReader(new InputStreamReader (System.in));  
   System.out.print("Type an integer: ");  
   userInput = reader.readLine();
  }
  catch (IOException e) {
    System.out.println ("An I/O error occured: "+e);
  }
  try {
   n=Integer.parseInt(userInput.trim());
   System.out.println("You typed: "+n);
  }
  catch(NumberFormatException e) {
   System.out.println("An I/O error occured: " +e);
  }
 }
}

Χαθηκε να βαλουν ενα cin οι ανθρωποι οπως στη c++; Πολυ φασαρια για το τιποτα... Τελος παντων.


Title: Re: Γενικά
Post by: fugiFOX on November 16, 2004, 12:16:08 pm
Η αιώνια διαμάχη... C/C++ VS Java  ::)

Για να πάρεις θέση πρέπει να έχεις βαθιά γνώση των 2 γλωσσών αλλά αυτό που μπορώ να πω είναι ότι η Java αντιμετωπίζει τα Strings σαν αντικείμενα σε αντίθεση με την C (& ΜΑΤΛΑΒ) που είναι πίνακας.
Αυτό έχει πλεονεκ΄τηματα όπως το κορυφαίο "string1"+"string2"
αλλά και μειονεκτήματα όπως στη δική σου περίπτωση.



Title: Re: Γενικά
Post by: gfloros on November 16, 2004, 13:03:01 pm
Axel mporei na exei lathos. Sto edwsa sta grhgora xwris na to treksw apla gia na katalaveis to skeptiko...
Elpizw na boithisa
Flo


Title: Re: Γενικά
Post by: Axel on November 17, 2004, 19:21:43 pm
Επειδη χρησιμοποιω τον javac μεσα απο κονσολα DOS θελω να ρωτησω αν γνωριζει κανεις πως γινεται τα errors που μου βγαζει να τα γραφει ο compiler σε καποιο αρχειο ωστε να τα δω ολα. Ετσι και κανεις πανω απο 5 λαθη παει το εχασες μιας και σε win98 δεν μπορεις να δεις περισσοτερα απο οσα χωρανε στην οθονη τους DOS Prompt ή ετσι νομιζω τουλαχιστον...

Δοκιμασα τα εξης:
"javac MyClass.java > log.txt"  αλλα το αρχειο log.txt που μου δημιουργει ειναι κενο αν και εχω λαθη

"javac MyClass.java | more" που υποτιθεται οτι θα το σταματουσε αλλα ουτε αυτο επιασε

Επιπλεον παρατηρησα το εξης:
Εκτελω την εντολη
"java MyClass > log.txt"  

Στο αρχειο MyClass εχω καποια println τα οποια δεν εμφανιζονται στην οθονη του DOS Prompt. Ωστοσο εμφανιζονται στο Log.txt το οποιο δημιουργειται κανονικα αλλα δεν εχει τις τιμες τις οποιες περναω στο προγραμμα απο την κονσολα. Αυτο παλι γιατι συμβαινει;

Χρησιμοποιω την εκδοση 1.5


Title: Re: Γενικά
Post by: gfloros on November 17, 2004, 20:40:59 pm
Dokimase ayto...
"javac MyClass.java 2> log.txt"
Prepei na doulepsei...

Flo


Title: Re: Γενικά
Post by: Axel on November 18, 2004, 00:41:12 am
Dokimase ayto...
"javac MyClass.java 2> log.txt"
Prepei na doulepsei...

Flo

Δεν δουλεψε. Για την ακριβεια δεν το δεχεται σαν εντολη ο compiler.


Title: Re: Γενικά
Post by: fugiFOX on November 18, 2004, 02:08:10 am
1. Γιατί δεν βάζεις τον JBuilder; Προσφέρεται δωρεάν από τη σελίδα της Borland.
2. Η απορία σου είναι λίγο εξειδικευμένη, γιατί πολύ λίγος κόσμος χρησιμοποιεί το DOSpromt. Εάν δεν βρεις κάτι στα manuals της γλώσσας ρίξε μια ματιά στο FAQ του site.
Εάν την ώρα που βγάζει τα λάθη και "τρέχει" η οθόνη δοκίμασες το scrollLock/Pause-break?


Title: Re: Γενικά
Post by: Axel on November 18, 2004, 02:16:55 am
1. O JBulider ειναι βαρυς για τον υπολογιστη μου.
2. Εψαξα στα manuals και στο ιντερνετ και βρηκα τα δυο που αναφερω παραπανω αλλα δε δουλεψαν γι'αυτο ρωτησα και δω. To pause/brake δεν ειναι δυνατον να προλαβω να το πατησω για να σταματησει εκει που θελω και δεν ειναι δυνατον να βασιζομαι σε κατι τυχαιο για να κανω τη δουλεια μου.

Αυτο που με παραξενευει ειναι για ποιο λογο δημιουργειται το log.txt αλλα μενει κενο.


Title: Re: Γενικά
Post by: gfloros on November 18, 2004, 13:17:14 pm
Telika einai ligo pio dyskolo apo oti nomiza.
An eixes UNIX i Linux ta pragmata tha htan poly pio eykola.Tha mporouses na to kaneis kateytheian.
Epeidh omws kathe problhma exei th lysh tou exoume kai leme:
1h lysh:
 Quote from the Microsoft MS-DOS 5.0 User's Guide and Reference
(copyright 1991: Includes 5.25" disks!):

NOTE: Some command output, such as error messages, may not be
redirected when using the greater-than sign (>).

If you are frustrated by the situation where your compile errors
scroll off the top of the screen and you are left looking at the
last 4 errors of 27, I suggest you get an editor that allows you
to run DOS commands and catches the output in a scrollable
window. One such product is Programmer's File Editor, available
from http://www.lancs.ac.uk/people/cpaap/pfe.

2h lysh:
Ayth h lysh tha sou kateythynei se logfile ola ta console outputs ektos apo ta run-time errors. Mesa sto programma kaneis ta ekshs:

File logfile=new File(System.getProperty("user.dir")
+System.getProperty("file.separator")+"logfile.txt");
try{System.setOut(new PrintStream(new FileOutputStream
(logfile)));
}
catch (Exception e){
System.out.println("failed redirect");
System.out.println(e.toString());}

3h lysh:
To parathyro tou Dos exei mia idiothta pou sou epitrepei na setareis to screenbuffer oso theleis esy... Kane deksi click sto shortcut tou parathyrou tou Dos. Properties/layout kai sto screen buffer section peirakse to height wste na ginei oso to theleis...

4h lysh:
Dokimase kai ayto mhpws doulepsei kai pes mou... Etsi apo periergeia

javac [options] > file.log 2>&1


Nomizw kapoia apo aytes tha doulepsei. An thes tsekare tes oles na mas peis kai emas ti doulepse kai ti oxi...

Flo

P.s. Nai to JBuilder ontws poly kalytero alla einai kai poly bary. Exei dikio o Axel.


Title: Re: Γενικά
Post by: Axel on November 19, 2004, 17:07:18 pm
Thanks gfloros για τη βοηθεια. Λοιπον:
1η λυση:
Δουλεψε. :) Αν και ειναι πολυ αργο. Δεν ξερω γιατι μου καθυστερησε, αλλα τουλαχιστον τη δουλεια που θελω την κανει. Thaaaaaaaaanks :D
Κατεβαστε το απο εδω, ειναι πιο γρηγορος ο server απο τον official.

http://freeware4u.com/modules/mydownloads/singlefile.php?lid=43&title=Programmer's%20File%20Editor%20(PFE) (http://freeware4u.com/modules/mydownloads/singlefile.php?lid=43&title=Programmer's%20File%20Editor%20(PFE))

2η λυση:
Δεν το εχω δοκιμασει λογο ελλειψης χρονου

3η λυση:
Το ειχα κανει και γω αυτο, αλλα και παλι δεν μπορω να το ορισω τοσο ωστε να φαινονται ολα αυτα που θελω. Οποτε δεν βολευει.

4η λυση:
Δεν δουλεψε. Δεντο δεχεται ως εντολη ο javac.

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

Οσον αφορα την εισαγωγη ακεραιου απο την κονσολα βρηκα τι εφταιγε στο αρχικο προγραμμα που ειχα γραψει. Οριστε ο σωστος κωδικας:

import java.io.*;

public class ConsoleInput {
  public static void main(String[] args) throws IOException {
   try {
    System.out.print ("Type an integer: ");
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String val = in.readLine();      
    System.out.println ("You typed: " +val);
   }
   catch (IOException e) {  
    System.out.println ("IOException: " +e);
   }  
  }
}


Title: Re: Γενικά
Post by: gfloros on November 19, 2004, 17:21:19 pm
Wraia, eyxaristw pou dokimases tis lyseis. Toulaxiston na kserw kai egw ti douleyei kai ti oxi... An kapoia stigmh exeis xrono na dokimaseis kai th 2h pes mas ta apotelesmata...   ;)

Oso gia to programma me ton akeraio, ayto pou kaneis nomizw einai na apothikeyseis ayto pou diabazeis san string kai na to typwseis san string. Dokimase omws na to xeiristeis ws akeraio. Profanws tha xreiastei na kaneis to trimarisma pou legame...
Tespa, blepontas kai kanontas...
Gia oti xreiasteis allo, mh distaseis...

Flo


Title: Re: Γενικά
Post by: Cyberkat on November 22, 2004, 14:03:34 pm
Δυο ερωτήσεις και από εμένα:
1.Υπάρχει τρόπος να δημιουργήσεις στην Java δυναμικό πίνακα όπως στην C++?
2.Υπάρχει τρόπος να έχουμε μια μεταβλητή την οποία να διαφοροποιούμε από διάφορες cases μιας εντολής switch?
thanks


Title: Re: Γενικά
Post by: gfloros on November 22, 2004, 15:13:12 pm
1. Se glwsses opws h C kai h C++ olh th diaxeirhsh ths mnhmhs thn kaneis o programmatisths. Desmeyei mnhmh apodesmeyei mnhmh kai ta loipa. Sta plaisia ayta mporeis na dhmiourghseis kai enan dynamiko pinaka. Sth Java pali kapoia pragmata ginontai aytomata. H Java desmeyei mnhmh mono gia antikeimena (objects). Sthn pragmatikothta h Java diathetei enan garbage collector o opoios aytomata otan kapoio antikeimeno tithetai anenergo apodesmeyei th mnhmh pou ayto katexei. Me ayto ton tropo epitygxanetai h dynamikh desmeysh mnhmhs. Ta thetika einai dyo. Prwton oti glitwnei douleia o programmatisths kai deyteron apofeygontai diafora palava pou pithanon na parousiastoun sth C apo kapoio mikro lathaki stis desmeyseis/apodesmeyseis. To arnhtiko einai oti eisai ligaki periorismenos me thn ennoia oti den elegxeis esy tis desmeyseis/apodesmeyseis.

2. Nai yparxei i entolh switch pou kanei thn idia douleia opws sth C, an katalava kala thn erwthsh sou.

Flo


Title: Re: Γενικά
Post by: Thomy on December 27, 2004, 21:45:33 pm
Ξέρει μήπως κανείς πώς μπορείς στη Java να υψώσεις έναν ακέραιο σε δύναμη;


Title: Re: Γενικά
Post by: amatakos on December 28, 2004, 06:49:07 am
Ξέρει μήπως κανείς πώς μπορείς στη Java να υψώσεις έναν ακέραιο σε δύναμη;

Yparxei me8odos pow() sth java.lang.Math .  Thn kaleis ws Math.pow(double a, double b) kai ypswnei to a sthn dynamh poy prosdiorizei to b (epistrefei double). Gia perisotera des to api documentation ths klashs Math.

Elpizw h apanthsh na se kalypse.


Title: Re: Γενικά
Post by: gfloros on December 28, 2004, 13:31:19 pm
O αματάκος μίλησε σωστά:
Για την πληρότητα του πράγματος αντιγράφω...

--------------------------------------------------------------------------------
public static double pow(double a,
                           double b) throws ArithmeticException

Returns the number a raised to the power of b. If (a == 0.0), then b must be greater than 0.0; otherwise you will throw an exception. An exception will also occur if (a <= 0.0) and b is not equal to a whole number.
Parameters:
a - an assigned value with the exceptions: (a == 0.0) -> (b > 0.0) && (a <= 0.0) -> (b == a whole number)
b - an assigned value with the exceptions: (a == 0.0) -> (b > 0.0) && (a <= 0.0) -> (b == a whole number)
Throws: ArithmeticException
If (a == 0.0) and (b <= 0.0) .
Throws: ArithmeticException
If (a <= 0.0) and b is not equal to a whole number.
--------------------------------------------------------------------------------

Flo