2016-08-30 35 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

我会尽力并记住你的建议。感谢您的详细解答。 –