improved user input

Συζητήσεις για την Java

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Son^Goku
Δημοσιεύσεις: 379
Εγγραφή: 18 Δεκ 2003 21:40
Τοποθεσία: Ελλάς, Κύπρος, Λεμεσός, Κάτω Πολεμίδια
Επικοινωνία:

improved user input

Δημοσίευση από Son^Goku » 19 Νοέμ 2008 15:40

Λοιπόν μετά από 2 χρόνια προγραμματιστικής απουσίας (υπέρ πίστεως και πατρίδας) άρχισα στο 1ο εξάμηνο της σχολής μου να μαθαίνω java(στο λύκειο κάναμε pascal). Μάθαμε να εισάγουμε δεδομένα και φτοίαξαμε και μια κλάση user input που θα χρησιμοποιούμε σε όλα τα υπόλοιπα εργαστήρια. Μάθαμε και τους βρόγχους while, for, do while κτλ... Αυτό που προσπαθώ να κάνω είναι να ενσωματώσω το do while στη user input ώστε όταν ζητάω integer και μου βάζει char ή double ή όταν γενικά ζητάω ενός τύπου δεδομένα και εισάγονται άλλου είδους να παγιδεύει το χρήστη σε ένα βρόγχο μέχρι να εισάγει τα δεδομένα του ζητούμενου τύπου. Δε μπορώ να χρησιμοποιήσω τη scanner γιατί δε τη μάθαμε ακόμα.
Παράδειγμα user input χωρίς τη χρήση βρόγχου
import java.io.*;
class UserInput{
static float getFloat(){
String line;
InputStreamReader eisodosString=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(eisodosString);
try{
line=br.readLine();
float i=Float.parseFloat(line);
return i;
}
catch(Exception e){
return -1;
}
}

Παράδειγμα με τη χρήση βρόγχου όπως το σκέφτηκα εγώ αλλά μου βαράει unreachable statement

import java.io.*;
class UserInput{
static int getInteger(){
int cint=0;
String line;
InputStreamReader eisodosString=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(eisodosString);
do{
try{
line=br.readLine();
int i=Integer.parseInt(line);
return i;
cint=1;
}
catch(Exception e){
return -1;
cint=0;
}
} while (cint==0);
}
Μόνιμος κάτοικος Θεσσαλονίκης 8)
Rules Are Meant To Be Broken
Η υπογραφή μου

Άβαταρ μέλους
Son^Goku
Δημοσιεύσεις: 379
Εγγραφή: 18 Δεκ 2003 21:40
Τοποθεσία: Ελλάς, Κύπρος, Λεμεσός, Κάτω Πολεμίδια
Επικοινωνία:

improved user input

Δημοσίευση από Son^Goku » 19 Νοέμ 2008 16:34

Νέα απορία. Στο βόγχο while δε μπορώ να συγκρίνω μια μεταβλητή τύπου int αν είναι μεταξύ δύο αριθμών;
π.χ.
while (1>choice>2){
μου βαράει λάθος και αναγκάστικα να ξανανακαλύψω το τροχό :evil:

if (choice>2)
cchoice=true;
else if (choice<1)
cchoice=true;


while (cchoice==true){
System.out.println("Prosoxi prepei na epile3ete 1 gia anali4i, 2 gia kata8esi");
choice=UserInput.getInteger();
switch(choice){
case 1:cchoice=false;
break;

case 2:cchoice=false;
break;
}
}
Μόνιμος κάτοικος Θεσσαλονίκης 8)
Rules Are Meant To Be Broken
Η υπογραφή μου

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

improved user input

Δημοσίευση από dik_ » 19 Νοέμ 2008 17:03

Τα statements που έχεις μετά το return δεν θα εκτελεστούν ποτέ, γι' αυτό παίρνεις unreachable statement.

Για το δεύτερο:
while (1>choice && choice>2){...}

Άβαταρ μέλους
Son^Goku
Δημοσιεύσεις: 379
Εγγραφή: 18 Δεκ 2003 21:40
Τοποθεσία: Ελλάς, Κύπρος, Λεμεσός, Κάτω Πολεμίδια
Επικοινωνία:

improved user input

Δημοσίευση από Son^Goku » 19 Νοέμ 2008 18:19

Σ'ευχαριστώ ρε φίλε dik_ ur a life saver :P
Μόνιμος κάτοικος Θεσσαλονίκης 8)
Rules Are Meant To Be Broken
Η υπογραφή μου

Άβαταρ μέλους
Son^Goku
Δημοσιεύσεις: 379
Εγγραφή: 18 Δεκ 2003 21:40
Τοποθεσία: Ελλάς, Κύπρος, Λεμεσός, Κάτω Πολεμίδια
Επικοινωνία:

improved user input

Δημοσίευση από Son^Goku » 20 Νοέμ 2008 00:18

dik_ έγραψε:while (1>choice && choice>2){...}
Είσαι σίγουρος για αυτό επειδί όταν το δοκίμασα αγνόησε τελείως το βρόγχο ενώ με while (choice>2 || choice<1) δούλεψε κανονικά.
Μόνιμος κάτοικος Θεσσαλονίκης 8)
Rules Are Meant To Be Broken
Η υπογραφή μου

Άβαταρ μέλους
dik_
Δημοσιεύσεις: 476
Εγγραφή: 07 Ιουν 2007 11:28

improved user input

Δημοσίευση από dik_ » 20 Νοέμ 2008 18:34

Με αυτό:

Κώδικας: Επιλογή όλων

while &#40;1>choice && choice>2&#41;&#123;...&#125;
ο βρόγχος θα εκτελείται όταν το choice είναι και μικρότερο του ενός, και μεγαλύτερο του 2, άρα ποτέ! Λάθος μου, απλά το αντέγραψα κατευθείαν από το δικό σου ποστ.

Με αυτό:

Κώδικας: Επιλογή όλων

while &#40;choice>2 || choice<1&#41; 
ο βρόγχος θα εκτελείται όταν το choice είναι μεγαλύτερο του 2, ή μικρότερο του 1, δηλαδή για όλες τις τιμές του choice εκτός του διαστήματος [1,2], inclusive.

Άβαταρ μέλους
Son^Goku
Δημοσιεύσεις: 379
Εγγραφή: 18 Δεκ 2003 21:40
Τοποθεσία: Ελλάς, Κύπρος, Λεμεσός, Κάτω Πολεμίδια
Επικοινωνία:

improved user input

Δημοσίευση από Son^Goku » 21 Νοέμ 2008 14:22

Ναι αυτό ήθελα. Για τη user input παίζει καμιά ιδέα?
Μόνιμος κάτοικος Θεσσαλονίκης 8)
Rules Are Meant To Be Broken
Η υπογραφή μου

Απάντηση

Επιστροφή στο “Java”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 2 επισκέπτες