2010-08-23 23 views
5

Tôi chỉ đang học JAVA và gặp một chút rắc rối với phần cụ thể này trong mã của tôi. Tôi đã tìm kiếm một số trang web và đã thử nhiều phương pháp khác nhau nhưng dường như không thể tìm ra cách thực hiện một phương pháp phù hợp với các khả năng khác nhau.Xác thực nhập của người dùng cho JOptionPane.showInputDialog

int playerChoice = Integer.parseInt(JOptionPane.showInputDialog(null, "Enter number for corresponding selection:\n" 
       + " (1) - ROCK\n (2) - PAPER\n (3) - SCISSORS\n")) - 1; 

Tôi tưởng tượng tôi cần phải có một số loại xác thực ngay cả khi người dùng không có đầu vào cũng như đầu vào không phải là 1, 2 hoặc 3. Mọi người đều có đề xuất về cách tôi có thể thực hiện việc này?

Tôi đã thử một vòng lặp while, một câu lệnh if để kiểm tra null trước khi chuyển đổi đầu vào thành một số nguyên, cũng như một vài kiểu khác nếu phương thức khác.

Cảm ơn trước!

Trả lời

2

Đọc phần từ hướng dẫn Swing trên How to Make Dialogs, thực tế cho bạn biết cách sử dụng JOptionPane dễ dàng để bạn không cần phải xác thực đầu vào.

Có nhiều cách tiếp cận khác nhau mà bạn có thể sử dụng. Bạn có thể sử dụng một hộp kết hợp để hiển thị các lựa chọn hoặc có thể nhiều nút để chọn một lựa chọn.

Hướng dẫn này cũng cho bạn biết cách "Ngừng tự động đóng hộp thoại" để bạn có thể xác thực đầu vào của người dùng.

5

Bạn cần phải làm một cái gì đó như thế này để xử lý đầu vào xấu:

boolean inputAccepted = false; 
while(!inputAccepted) { 
    try { 
    int playerChoice = Integer.parseInt(JOption.... 

    // do some other validation checks 
    if (playerChoice < 1 || playerChoice > 3) { 
     // tell user still a bad number 
    } else { 
     // hooray - a good value 
     inputAccepted = true; 
    } 
    } catch(NumberFormatException e) { 
    // input is bad. Good idea to popup 
    // a dialog here (or some other communication) 
    // saying what you expect the 
    // user to enter. 
    } 

    ... do stuff with good input value 

}

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