当前位置: 首页 > 知识库问答 >
问题:

如果用户输入随机字母 JOptionPane,如何给出对话框错误

韩景辉
2023-03-14

所以我是java的新手,我正试图使用尝试和捕捉。例如,如果我问用户有多少葡萄,他们输入一串字母,它将显示一个错误对话框,而不仅仅是系统错误。我能够用扫描仪做到这一点,但不能用JOptionPane。我真的希望出现一个对话框,这就是为什么我试图使用JOptionPane.show输入输入对话框。

工作的扫描仪...=

import java.util.Scanner;

class test {
    public static void main (String[] args)
    {

        Scanner input = new Scanner(System.in);

        System.out.println("How many grapes do u have?");
        int grapes = 1;
        try
        {
            grapes = input.nextInt();
        }
        catch (Exception e)
        {
            System.out.println("Good job Sherlock you broke the program");
            return;
        }
        int mg;

        if (grapes >= 100)
            mg = 1;

        else
            mg = 2;

        switch (mg){
            case 1: System.out.println("You got a lot of grapes");
                break;
            case 2: System.out.println("You brarely got any grapes");
                break;
        }
    }
}

JOptionPane不工作...

import javax.swing.JOptionPane;

public class bday
{
    public static void main(String[] args)
    {
        String age = "0";
        try
        {
            age = JOptionPane.showInputDialog("What was your age yesterday?");
        }
        catch(Exception e)
        {
            JOptionPane.showMessageDialog(null, "Thanks a lot, you broke it. CYA later.");
            return;
        }
        int iage = Integer.parseInt(age);

        String bday = "0";

         try
         {
             bday = JOptionPane.showInputDialog("Was yesterday your B-Day? (True or False)");
         }
         catch (Exception e)
         {
            JOptionPane.showMessageDialog(null, "WHY U MESS UP PROGRAM???.... BYE BYE!!");
            return;
         }
         boolean bage = Boolean.parseBoolean(bday);
        if (bage == true){
            iage += 1;
            JOptionPane.showMessageDialog(null, "You are now " + iage);
        }
        else if (bage == false){
            JOptionPane.showMessageDialog(null, "Happy unbirthday!");
        }
        if (iage ==10){
            JOptionPane.showMessageDialog(null, "Congrats, double digits!");
        }
        if (iage >19){
            JOptionPane.showMessageDialog(null,  "U aint a Teenager");
        }
        else if (iage < 13)
            JOptionPane.showMessageDialog(null,  "U aint a Teenager");          

    }
}

共有2个答案

陈泰宁
2023-03-14

查看它失败的行。我怀疑它是布尔 bage = 布尔.parse布尔(bday);.您可以自由地在字符串中保存任何内容,但是将“whatever”转换为布尔值可能会失败。

把它放在你的尝试/捕捉。

蒲德曜
2023-03-14

你在尝试/捕捉错误的东西。您应该将parse语句放在try块中,因为这是引发异常的原因。

例如,不

    String age = "0";
    try
    {
        age = JOptionPane.showInputDialog("What was your age yesterday?");
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "Thanks a lot, you broke it. CYA later.");
        return;
    }
    int iage = Integer.parseInt(age);

而是:

String age = JOptionPane.showInputDialog("What was your age yesterday?");
try {
  iage = Integer.parseInt(age);
} catch (NumberFormatException nfe) {
  // show error
}  

此外,您应该避免捕获异常,而只应捕获特定的异常,此处为“数字格式异常”

编辑
在您询问的评论中编辑:

还有一个问题,我应该对布尔值做同样的事情吗?

在解析时,布尔类型有点棘手(在我看来)。要了解布尔值.parse布尔(...) 的工作原理,请查看布尔 API,特别是解析布尔方法。您将看到,如果输入的文本没有意义,它不会引发数字格式异常。API 将告诉您实际返回的内容。尝试/捕获块在这里不起作用。如果需要捕获错误,请考虑使用字符串的相等大小写(...)

 类似资料:
  • 使用JOptionPane。ShowInputDialog,我需要检查用户是否输入int,否则,JOptionPane应该返回错误消息,并提示用户输入正确的数据类型。 同时,如果用户点击取消节目则应返回主菜单。 对我如何做到这一点有什么建议吗?

  • 我正在为java类的介绍进行分配,并且遇到了困难,问题如下: “要求用户输入一个数字。您应该使用一个输入对话框来进行此输入。请确保将对话框中的字符串转换为实数。程序需要跟踪用户输入的最小数字和输入的最大数字。询问用户是否要输入另一个数字。如果是,请重复此过程。如果不是,请输出用户输入。 当用户想要退出时,此程序在程序末尾输出最大和最小的数字。 此外,您的程序应该考虑到用户只输入一个数字的情况。在这

  • 我是JAVA新手,我想我已经搜索了所有的问题,没有找到一个与我的问题相似的。 我想使用Math.random()生成随机数,以返回4个固定数。我想要得到的数字是:0、90、180和270。换句话说,我想要4个最小值为0、最大值为270、增量为90的数字。

  • 我有一个基于对话框的MFC应用程序。我有一个隐藏的编辑控件,它有读取USB连接扫描仪输入的默认焦点。对话框上的所有其他控件都是只读的。但是当用户单击任何控件时,隐藏的编辑控件都会失去焦点。我如何解决这个问题,使这个隐藏的编辑控件有焦点,即使在用户单击对话框的任何地方。

  • 我创建了以下类,用于输入用户的年龄,然后在控制台中显示适当的信息。 运行此程序时,控制台会询问“请输入您的年龄:”

  • 问题内容: 使用java如何生成随机的字母数字字符串? 问题答案: 算法 要生成随机字符串,请连接从可接受的符号集中随机抽取的字符,直到字符串达到所需的长度为止。 实例 这是一些相当简单且非常灵活的代码,用于生成随机标识符。阅读以下信息以获取重要的应用笔记。 用法示例 为8个字符的标识符创建不安全的生成器: 为会话标识符创建一个安全的生成器: 创建具有易于阅读的代码的生成器以进行打印。字符串比完整