首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:从扫描仪实用程序转换为JOptionPane

Java:从扫描仪实用程序转换为JOptionPane
EN

Stack Overflow用户
提问于 2015-08-01 09:30:33
回答 2查看 4.8K关注 0票数 2

我开始为我的班级创建一个Java程序。使用扫描仪工具在控制台中显示信息并不需要很长时间,所以我决定尝试让它利用JOptionPane,这样它就可以在弹出窗口中显示信息(很明显)。我可以将其设置为使用JOptionPane,但是在您在JOptionPane窗口中输入数字后,它会立即要求您在控制台中输入数字。我看到过一些问题,要求人们为他们转换他们的程序,但这不是我想要的。我只是想要一些提示,这样我就可以自己做了。

我想知道如何去掉构成它的部分,这样你就必须在控制台中输入数字,这样你就只使用JOptionPane。欢迎任何帮助。我知道程序并没有完全按照它现在的预期来做,但是一旦我得到我想要的地方,我就可以弄清楚这一部分。谢谢!

代码语言:javascript
复制
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);

  }
}
EN

回答 2

Stack Overflow用户

发布于 2015-08-01 11:41:22

显然,您显示了一个对话框,然后您没有对输入做任何操作,您要求用户再次输入它。

代码语言:javascript
复制
JOptionPane.showInputDialog(null,
 "Enter product number: ", "Product Number ", 
 JOptionPane.INFORMATION_MESSAGE);
    product=input.nextInt();

showInputDialog的调用实际上返回了用户输入,但是您忽略了它。取而代之的是,调用扫描控制台的input.nextInt ()。这就是为什么会出现输入对话框,您需要在控制台中输入您的输入。

因此,您根本不应该实例化Scanner对象。只需拨打:

代码语言:javascript
复制
String inputStr = JOptionPane.showInputDialog(null, "Enter product number: ", "Product Number ", 
JOptionPane.INFORMATION_MESSAGE);

现在您有了一个输入字符串。但是您希望在product变量中包含一个int。因此,您可以调用:

代码语言:javascript
复制
product = Integer.parseInt (inputStr);

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

票数 1
EN

Stack Overflow用户

发布于 2015-08-01 09:43:13

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

代码语言:javascript
复制
String inputValue = JOptionPane.showInputDialog("Please input a value");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31757333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档