【问题标题】:Compare a user inputted number with a randomly generated number [duplicate]将用户输入的数字与随机生成的数字进行比较[重复]
【发布时间】:2015-09-14 20:05:24
【问题描述】:

我的任务是创建一个随机生成的数字,要求用户输入一个数字,然后比较两者并显示一个消息框,告诉他们是否匹配。到目前为止,这是我的代码...

import javax.swing.*;   //GUI components

public class RandomGuessMatch {

    public static void main(String[] args) {
        Integer random = (1 + (int)(Math.random() * 5)),
                userNum;

        // Get the input
        userNum = JOptionPane.showInputDialog("Enter a number 1 - 5.");

        //Checks to see if numbers match
        boolean matches = (random == userNum);
        JOptionPane.showMessageDialog(null, "The random number is " + random + ". " + "Does it match? " + matches);

    }

}

我遇到的唯一错误是我尝试获取用户输入时。 “无法从字符串转换为整数”。但是,我无法弄清楚如何获取用户的号码并将其与“userNum”相关联,以便将其与“随机”进行比较。有什么帮助吗?

【问题讨论】:

  • 你为什么使用 Integer 而不是 int? Integer 只是 int 的一个类包装器,如果您需要处理泛型,这主要是必需的。

标签: java


【解决方案1】:

JOptionPane 的showInputDialog 方法返回String。您可以做的是在 Integer 类的构造函数中使用结果字符串作为参数:

userNum = new Integer(JOptionPane.showInputDialog("Enter a number 1 - 5."));

此外,由于您使用的是 Integer 对象,因此您必须使用 equals 方法来比较它们:

boolean matches = random.equals(userNum);

【讨论】:

  • 哦,我爱你!它完美地工作。我有一位教授学习材料的速度非常快,而且通常甚至不包括如何做她布置为家庭作业的某些事情,一旦我离开教室,我就会一无所知。我尽量自己解决问题,但有时我会承认我需要提升。谢谢您的帮助。我想知道equals方法!实际上,我曾经在我的代码中使用过它,但我不确定哪种方法是正确的,并且一直在来回切换,哈哈。
【解决方案2】:

您可以通过解析将字符串转换为整数。

int x = Integer.parseInt("1");

请注意,如果字符串为 NaN,则会引发异常

【讨论】:

    【解决方案3】:

    您需要使用

    将字符串响应转换为整数
    Integer.parseInt(userChoice)
    

    【讨论】:

      【解决方案4】:

      您可以通过这种方式获取输入:

      userNum = Integer.getInteger(JOptionPane.showInputDialog("Enter a number 1 - 5."));
      

      稍后您可以进行一些输入验证以防止非整数输入。

      【讨论】:

      • Integer.getInteger 是这里的错误方法。您应该使用Integer.parseIntInteger.valueOfInteger.getInteger“确定具有指定名称的系统属性的整数值”。他只是想从字符串中解析一个整数。
      • 谢谢,刚刚从自动补全中选了第一种方法。
      【解决方案5】:

      ShowInputDialog will return a String。因此,您将其值放入的变量也必须具有 String 类型。

      尝试创建一个名为“userInput”的变量并将用户输入的值放入其中。那你可以说

      userNum = Integer.valueOf(userInput);
      

      从那里,使用“userNum.equals(random)”比较两个整数。双等号运算符仅适用于 int 类型,不适用于整数。

      【讨论】:

        【解决方案6】:

        如果您读取用户输入,它是一个字符串,因此您必须将 userNum 声明为字符串而不是整数。

        String userNum;
        

        下一步是将随机数与字符串进行比较。为此,您需要 Integer.valueOf(String s) 方法,因此它们都是整数值:

        boolean matches = (random == Integer.valueOf(userNum));
        

        玩得开心:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-09
          • 2023-03-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多