为什么我必须使用Integer.parseInt?

时间:2014-11-08 22:27:27

标签: java parsing types

我是Java的新手,请原谅我,如果这是一个愚蠢的问题。

首先,我做了以下操作(这是我的代码中的一部分):

public static void team()
    {
        int score = JOptionPane.showInputDialog("Enter the team score...");
        calculate(score);   
    }

但我不断收到错误说:“不兼容的类型字符串无法转换为int”。 所以我想我可能需要使用解析。我做了以下工作并且有效:

public static void team()
    {
        int myScore;

        String score = JOptionPane.showInputDialog("Enter the team score...");
        myScore = Integer.parseInt(score);

        calculate(myScore);

    }   

我想知道为什么我需要解析变量“得分”?在第一段代码中,我将变量分数声明为整数,因此它不会存储我期望在变量分数中作为整数的输入,然后将其传递给方法计算。我知道解析是将String转换为Integer的时候。但是在这种情况下,我不希望用户输入字符串,为什么需要解析?

3 个答案:

答案 0 :(得分:2)

原因很简单:因为JOptionPane.showInputDialog() returns a String,无论您实际想要用户输入什么内容。

Java中没有基于目标变量类型myScore进行自动转换的机制(尽管其他一些语言也可以这样做,例如Scala中的implicit conversions)。

您可以(原则上)创建一个返回int的自定义对话框,例如通过让用户从下拉列表中选择数字,然后不需要解析。但除此之外,你必须明确解析。

答案 1 :(得分:1)

因为字符串的存储方式与整数不同。整数以二进制形式存储,而String则是一组字符。

实施例: 数字14将以二进制存储为1110。但是,作为String,它存储为00110001 00110100

看看这个http://www.roubaixinteractive.com/PlayGround/Binary_Conversion/The_Characters.asp

Integer.parseInt()基本上通过查找查找表中的字符为您完成脏工作,并且只要它们与正确的整数值相关联,它就会将其转换为二进制形式,以便存储在整数。

答案 2 :(得分:1)

JOptionPane.showInputDialog("Enter the team score...");返回您尝试存储在int中的String。这就是为什么你得到“不兼容的类型” 有关详细信息,请参阅Javadocs