2016-08-30 36 views
0

我剛剛開始與Java和編程一般。有人可以向我解釋爲什麼第二個對話框在我輸入第一個對話框後不會顯示出來?第二個JOptionPane不會出現

謝謝!

// Java Practice 

import javax.swing.JOptionPane; 
import java.util.Scanner; 

public class DialogTest 
{ 
    public static void main(String [] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     String firstname; 
     String lastname; 
     int age; 

     JOptionPane.showInputDialog("What is " + 
            "your first name?"); 
     firstname = keyboard.nextLine(); 

     JOptionPane.showInputDialog("What is " + 
            "your last name?"); 
     lastname = keyboard.nextLine(); 

     JOptionPane.showInputDialog("How old are you?"); 
     age = keyboard.nextInt(); 

     JOptionPane.showMessageDialog(null, "I see, so your name is: " + firstname + lastname + " and you are" + age + " years old."); 

     System.exit(0); 
    } 
} 

回答

2

JOptionPane.showInputDialog()返回String包含由用戶輸入的值。除了使用Scanner類,方法調用的返回值保存到您的變量:

String firstname, lastname, age; 

firstname = JOptionPane.showInputDialog("What is " + 
           "your first name?"); 

lastname = JOptionPane.showInputDialog("What is " + 
           "your last name?"); 

age = JOptionPane.showInputDialog("How old are you?"); 

JOptionPane.showMessageDialog(null, "I see, so your name is: " + firstname + lastname + " and you are" + age + " years old."); 
+0

工作,謝謝! –

0

你並不需要同時JOptionPaneScanner。你只需要一個(我強烈推薦Scanner)。

發生了什麼事是這樣的:撥打JOptionPane打開一個對話框,爲您的用戶輸入一個值。這個值是通過這個方法調用返回的,你什麼也不做。然後對話結束後,你叫keyboard.nextLine()阻斷程序,直到用戶輸入另一價值進入命令行窗口(或你的IDE,如果你通過運行它)。

如果您想查看兩種可用選項,請嘗試註釋keyboard行並設置firstname = JOptionPane...等。一旦你嘗試了這個程序,做相反的事情:註釋掉JOptionPane的呼叫,並用System.out.println呼叫替換它們。

作爲通過JOptionPane開始學習輸入處理的人,我相信Scanner是一個更好的實用程序。

+0

我會盡力並記住你的建議。感謝您的詳細解答。 –