2010-03-14 37 views
5

sry về tiếng anh của tôi :)
Im mới để lập trình Java và tôi gặp sự cố với Máy quét. Tôi cần phải đọc một Int, hiển thị một số công cụ và sau đó đọc một chuỗi vì vậy tôi sử dụng sc.nextInt(); hiển thị nội dung của tôi showMenu(); và sau đó thử đọc một chuỗi palabra = sc.nextLine();Sự cố với Máy quét Java sc.nextLine();

Một số người đã nói với tôi rằng tôi cần sử dụng sc.nextLine(); sau sc.nextInt(); nhưng tôi không hiểu tại sao bạn phải làm điều đó :(

Đây là mã của tôi:

public static void main(String[] args) { 
    // TODO code application logic here 
    Scanner sc = new Scanner(System.in); 
    int respuesta = 1; 

    showMenu(); 
    respuesta = sc.nextInt(); 
    sc.nextLine(); //Why is this line necessary for second scan to work? 

    switch (respuesta){ 
     case 1: 
      System.out.println("=== Palindromo ==="); 
      String palabra = sc.nextLine(); 
      if (esPalindromo(palabra) == true) 
       System.out.println("Es Palindromo"); 
      else 
       System.out.println("No es Palindromo"); 
     break; 
    } 


} 

Ty rất nhiều đã dành thời gian và Trợ giúp: D

Trả lời

7

nextInt() chỉ đọc cho đến khi nó được tìm thấy và sau đó dừng lại

Bạn phải làm nextLine() vì luồng đầu vào vẫn có ký tự dòng mới và có thể là dữ liệu không phải int khác trên đường dây. người dùng nhấn giữa nhập int và nhập String.

+0

: O ty rất nhiều, tôi đã tự hỏi về nó quá nhiều thời gian :) –

+0

Lần đầu tiên tôi gặp phải vấn đề này, nó cũng làm tôi bối rối, nhưng một khi bạn biết tại sao nó lại có ý nghĩa! –

+0

là tốt đẹp để biết im không phải là người duy nhất: D –

0

Khi bạn nhập một giá trị (dù String, int, double, vv ...) và nhấn 'enter,' một nhân vật mới-line (aka '\n') sẽ được nối vào cuối của đầu vào của bạn. Vì vậy, nếu bạn đang nhập một int, sc.nextInt() sẽ chỉ đọc số nguyên được nhập và để lại '\n' phía sau trong bộ đệm. Vì vậy, cách khắc phục điều này là thêm sc.nextLine() để đọc phần còn lại và vứt đi. Đây là lý do tại sao bạn cần có một dòng mã trong chương trình của bạn.

Các vấn đề liên quan