第二次JOptionPane赢了

时间:2016-08-30 20:40:48

标签: java

我刚刚开始使用Java和编程。有人可以向我解释为什么第二个对话框在我输入第一个对话框的信息后才会显示出来吗?

谢谢!

// 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 个答案:

答案 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.");

答案 1 :(得分:0)

您不需要JOptionPaneScanner。你只需要一个(我强烈推荐Scanner而不是另一个)。

这是怎么回事:对JOptionPane的调用是打开一个对话框供您的用户输入值。该方法调用返回该值,您不执行任何操作。然后对话框完成后,调用阻止程序的keyboard.nextLine(),直到用户将另一个输入命令行窗口 (或者你的IDE,如果你正在运行它。)

如果您希望同时看到这两个选项,请尝试注释掉keyboard行并设置firstname = JOptionPane...,依此类推。一旦您尝试了该计划,请执行相反的操作:注释掉JOptionPane来电并将其替换为System.out.println来电。

作为开始通过JOptionPane学习输入处理的人,我相信Scanner是一个更好的实用工具。

相关问题