Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JOptionPane.showInputDialog只显示一次_Java_Swing_Joptionpane - Fatal编程技术网

Java JOptionPane.showInputDialog只显示一次

Java JOptionPane.showInputDialog只显示一次,java,swing,joptionpane,Java,Swing,Joptionpane,在一节编程课上,我们被要求制作一个程序,告诉用户他们以前的英镑先令和便士现在的英镑值多少。我使用控制台作为程序的输入和输出完全可以实现这一点,但现在,当我尝试使用JOptionPane来实现这一点时,向用户显示小的弹出框是行不通的。当我运行任务时,只显示第一个弹出窗口,程序结束时没有任何形式的错误消息。我假设这是语法上的一个简单错误,但我无法发现它 如果有人发现错误,请帮我解决,谢谢:)您使用JOptionPane和扫描仪的方式导致了问题 import java.util.Scanner; im

在一节编程课上,我们被要求制作一个程序,告诉用户他们以前的英镑先令和便士现在的英镑值多少。我使用控制台作为程序的输入和输出完全可以实现这一点,但现在,当我尝试使用
JOptionPane
来实现这一点时,向用户显示小的弹出框是行不通的。当我运行任务时,只显示第一个弹出窗口,程序结束时没有任何形式的错误消息。我假设这是语法上的一个简单错误,但我无法发现它


如果有人发现错误,请帮我解决,谢谢:)

您使用
JOptionPane
扫描仪的方式导致了问题

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

public class moneyRate {

    public static void main(String[] args) {
        //Get Inputs
        Scanner input = new Scanner(System.in);
        JOptionPane.showInputDialog("How many old pounds? ");
        double oldPounds = input.nextDouble();
        JOptionPane.showInputDialog("How many old shillings? ");
        double oldShillings = input.nextDouble();
        JOptionPane.showInputDialog("How many old pennies? ");
        double oldPennies = input.nextDouble();

        input.close();

        //New Pounds calc
        double newPounds = ((oldPounds*160.80) + (oldShillings*8.04) + (oldPennies*0.67));

        System.out.print("Your old pounds shillings and pennies are equal to £4"
                + "" + newPounds + ".");
    }
}
现在,您的程序将保留在那里,以等待来自控制台的输入。您需要按如下方式更改代码

JOptionPane.showInputDialog("How many old pounds? "); // display this
double oldPounds = input.nextDouble(); // then it wait for scanner input

你在那里干什么?显示对话框后,从命令行读取。您应该从inputDialog中获取值。

Ruchira答案已完成。。请注意 JOptionPane.showInputDialog()的 返回一个字符串


这就是为什么您需要他在代码中输入的Double.parseDouble转换。

为什么不从joption窗格中获取输入
 double oldPounds = Double.parseDouble(JOptionPane.showInputDialog("How many old pounds? "));
 double oldShillings = Double.parseDouble(JOptionPane.showInputDialog("How many old shillings? "));
 double oldPennies = Double.parseDouble(JOptionPane.showInputDialog("How many old pennies? "));

 double newPounds = ((oldPounds*160.80) + (oldShillings*8.04) + (oldPennies*0.67));

 System.out.print("Your old pounds shillings and pennies are equal to £4"
            + "" + newPounds + ".");