Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σε όλους,

 

Εχω την παρακάτω απορία για την 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.

κάνω κάτι λάθος? καμία βοήθεια?

Δημοσ.

>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

καμια ιδέα?

Δημοσ.

Γεια σε όλους,

 

Εχω την παρακάτω απορία για την 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();

Δημοσ.

Ο κώδικας που έδωσες φαίνεται ότι δουλεύει. Αν μάλιστα του προσθέσουμε μια 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);

   }
}

Δημοσ.

νομίζω πως το πρόβλημα βρίσκεται στο διάβασμα του 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

Δημοσ.

βάλε και ένα

 

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

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...