Dark_Sage Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Γεια σε όλους, Εχω την παρακάτω απορία για την scanner. έχοντας κάνει import java.util.Scanner; Scanner myscan = new Scanner(System.in); Μετά την χρησιμοποιώ για να διαβάσω τιμές για 1 string που έχω, για 1 integer και μετά πάλι για 1 string άρα mystring1 = myscan.next(); myint = myscan.nextInt(); mystring2 = myscan.next(); το πρόβλημα είναι πως μου κάνει skip το διάβασμα για τον integer, σαν να αγνοεί δηλαδή το scan. κάνω κάτι λάθος? καμία βοήθεια?
nilosgr Δημοσ. 6 Νοεμβρίου 2011 Δημοσ. 6 Νοεμβρίου 2011 Βαλε βοηθητικες System.out.println() και αν δε βγαλεις ακρη βαλε μας τον κωδικα
Dark_Sage Δημοσ. 7 Νοεμβρίου 2011 Μέλος Δημοσ. 7 Νοεμβρίου 2011 >import java.util.Scanner; public class Testing { int myint; String mystring1; String mystring2; String mystring3; public static void main(String[] args) { Scanner myscan = new Scanner(System.in); Testing MyTest = new Testing(); System.out.println("1st string: "); MyTest.mystring1= myscan.next(); System.out.println("2nd string: "); MyTest.mystring2= myscan.next(); System.out.println("1st int: "); MyTest.myint= myscan.nextInt(); System.out.println("3rd string: "); MyTest.mystring3= myscan.next(); } } αυτός είναι ο κώδικας και μου κάνει skip το διάβασμα του int καμια ιδέα?
Lanike71 Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Γεια σε όλους, Εχω την παρακάτω απορία για την scanner. έχοντας κάνει import java.util.Scanner; Scanner myscan = new Scanner(System.in); Μετά την χρησιμοποιώ για να διαβάσω τιμές για 1 string που έχω, για 1 integer και μετά πάλι για 1 string άρα mystring1 = myscan.next(); myint = myscan.nextInt(); mystring2 = myscan.next(); το πρόβλημα είναι πως μου κάνει skip το διάβασμα για τον integer, σαν να αγνοεί δηλαδή το scan. κάνω κάτι λάθος? καμία βοήθεια? H σύνταξη για strings είναι myscan.nextLine();
nexuss Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 Ο κώδικας που έδωσες φαίνεται ότι δουλεύει. Αν μάλιστα του προσθέσουμε μια println στο τέλος, θα εμφανίσει όλα αυτά που βάλαμε. Δες παρακάτω: >import java.util.Scanner; public class Testing { int myint; String mystring1; String mystring2; String mystring3; public static void main(String[] args) { Scanner myscan = new Scanner(System.in); Testing MyTest = new Testing(); System.out.println("1st string: "); MyTest.mystring1= myscan.next(); System.out.println("2nd string: "); MyTest.mystring2= myscan.next(); System.out.println("1st int: "); MyTest.myint= myscan.nextInt(); System.out.println("3rd string: "); MyTest.mystring3= myscan.next(); System.out.println("mystring1:" + MyTest.mystring1 + " " + "mystring2:" + MyTest.mystring2 + " " + "myint:" + MyTest.myint + " " + "mystring3:" + MyTest.mystring3); } }
darksize_ Δημοσ. 7 Νοεμβρίου 2011 Δημοσ. 7 Νοεμβρίου 2011 νομίζω πως το πρόβλημα βρίσκεται στο διάβασμα του int όταν πατάς έντερ για να δώσεις την τιμή σαν είσοδο, το string κάνει ignore το newline character, ενώ το int όχι, με αποτέλεσμα το newline character να αποθηκεύεται στον buffer και να πηγαίνει αυτόματα στο επόμενο string προσωπικά προτιμώ να χρησιμοποιώ την buffered reader της οποίας η σύνταξη είναι > BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); αλλά εάν θές ντε και καλά να χρησιμοποιήσεις την scanner διάβασε το int σαν string και μετά μέσω της Integer.ParseInt πάρε τον integer
nakayama Δημοσ. 12 Νοεμβρίου 2011 Δημοσ. 12 Νοεμβρίου 2011 βάλε και ένα try { //code }catch(Exception WHAT_IS_HAPPENING) { System.out.println("Problem : "+WHAT_IS_HAPPENING.getMessage()); System.out.println("Detailed Report Follows"); WHAT_IS_HAPPENING.printStackTrace(); } Για να καταλάβεις ακριβώς που έχει bug
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα