Java:从Scanner实用程序转换为JOptionPane

时间:2015-08-01 01:30:33

标签: java java.util.scanner joptionpane

我开始为我的班级创建一个Java程序。使用Scanner实用程序在控制台中显示信息并不需要很长时间,因此我决定尝试使用JOptionPane,以便在弹出窗口中显示信息(显然)。我可以使用JOptionPane,但是在JOptionPane窗口中输入数字后,它会要求您在控制台中输入它。我见过要求人们为他们转换程序的问题,但这不是我想要的。我只是想要一些提示,所以我可以自己做。

我想知道如何摆脱使它成为它的部分所以你必须输入控制台中的数字,所以你只使用JOptionPane。欢迎任何帮助。我知道程序并没有完全像预期的那样完成,但是一旦我到达我想要的位置,我就可以想出那个部分。谢谢!

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


public class Program4
{

public static void main(String[] args)
{
    Scanner input = new Scanner (System.in);
    int product = 0;
    double product1;
    double product2;
    double product3;
    double product4;
    double product5;
    int quantity;
    String done = "y";
  int selection;
  boolean isNo;
    double totalSales = 0;

    while (done.equals("y"))
    {
        JOptionPane.showInputDialog(null,
     "Enter product number: ", "Product Number ", 
     JOptionPane.INFORMATION_MESSAGE);
        product=input.nextInt();

        JOptionPane.showInputDialog(null, 
     "Enter how many were sold: ", "Product Quantity ", 
     JOptionPane.INFORMATION_MESSAGE);
        quantity= input.nextInt();



   JOptionPane.showMessageDialog(null,
   "Total Sales $" + totalSales);



        switch (product)
        {
            case 1: product1 = 2.98;
                    totalSales+=(2.98*quantity);
                    break;
            case 2: product2 = 4.50;
                    totalSales+=(4.50*quantity);
                     break;
            case 3: product3 = 9.98;
                    totalSales+=(9.98*quantity);
                    break;
            case 4: product4 = 4.49;
                    totalSales+=(4.49*quantity);
                    break;
            case 5: product5 = 6.87;
                    totalSales+=(6.87*quantity);
                    break;
        }

        selection = JOptionPane.showConfirmDialog(null, 
     "Any other products?" );
     isNo = (selection == JOptionPane.YES_NO_OPTION);
     done = input.next();
    }
    System.out.println(totalSales);

  }
}

2 个答案:

答案 0 :(得分:1)

显然,你显示了对话框,然后你没有对输入做任何事情,你要求用户再次输入。

JOptionPane.showInputDialog(null,
 "Enter product number: ", "Product Number ", 
 JOptionPane.INFORMATION_MESSAGE);
    product=input.nextInt();

showInputDialog的调用实际上会返回用户输入,但您忽略了它。相反,您调用input.nextInt ()来扫描控制台。这就是输入对话框出现的原因,您需要在控制台中输入输入。

因此,您根本不应该实例化Scanner对象。请致电:

String inputStr = JOptionPane.showInputDialog(null, "Enter product number: ", "Product Number ", 
JOptionPane.INFORMATION_MESSAGE);

现在你有一个输入字符串。但是您想要int进入product变量。所以你打电话:

product = Integer.parseInt (inputStr);

如果你不明白,请在评论中问我!

答案 1 :(得分:0)

因此JOptionPane.showInputDialog返回用户输入的字符串。这将取代扫描仪。使用从JOptionPane返回的字符串。

String inputValue = JOptionPane.showInputDialog("Please input a value");