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

Java 为什么我必须使用Integer.parseInt?,java,parsing,types,Java,Parsing,Types,我是Java新手,如果这是一个愚蠢的问题,请原谅我 首先,我做了以下工作(这是我代码中的一部分): 但我一直收到一个错误,说:“不兼容的类型字符串不能转换为int”。 所以我想我可能需要使用解析。我做到了以下几点,效果很好: public static void team() { int myScore; String score = JOptionPane.showInputDialog("Enter the team score...");

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

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

但我一直收到一个错误,说:“不兼容的类型字符串不能转换为int”。 所以我想我可能需要使用解析。我做到了以下几点,效果很好:

public static void team()
    {
        int myScore;

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

        calculate(myScore);

    }   

我想知道为什么我需要解析变量“score”?在第一段代码中,我将变量score声明为整数,因此它不会将我期望为整数的输入存储在变量score中,然后将其传递到calculate方法中。我理解解析就是将字符串转换成整数。但是在这种情况下,我不希望用户输入字符串,那么为什么需要进行解析呢?

原因很简单:因为
JOptionPane.showInputDialog()
,而不管您实际希望用户输入什么

Java中没有根据目标变量类型进行自动转换的机制(尽管有些其他语言可以这样做,例如Scala)


您可以(原则上)创建一个自定义对话框,该对话框返回一个
int
,例如,让用户从数字下拉列表中进行选择,然后无需解析。但除此之外,您必须显式地进行解析。

原因很简单:因为
JOptionPane.showInputDialog()
,而不管您实际希望用户输入什么

Java中没有根据目标变量类型进行自动转换的机制(尽管有些其他语言可以这样做,例如Scala)


您可以(原则上)创建一个自定义对话框,该对话框返回一个
int
,例如,让用户从数字下拉列表中进行选择,然后无需解析。但除此之外,您必须显式地进行解析。

因为字符串的存储方式不同于整数。整数以二进制形式存储,而字符串是字符的集合

例如: 数字14将以二进制形式存储为1110。但是,作为字符串,它存储为00110001 00110100

看看这个


parseInt()基本上为您完成了一些繁琐的工作,方法是在查找表中查找字符,只要它们与正确的整数值相关,它就会将其转换为二进制形式,以整数形式存储

因为字符串的存储方式不同于整数。整数以二进制形式存储,而字符串是字符的集合

例如: 数字14将以二进制形式存储为1110。但是,作为字符串,它存储为00110001 00110100

看看这个


parseInt()基本上为您完成了一些繁琐的工作,方法是在查找表中查找字符,只要它们与正确的整数值相关,它就会将其转换为二进制形式,以整数形式存储

作业窗格。showInputDialog(“输入团队分数…”)返回试图存储在int中的字符串。这就是为什么会得到“不兼容类型”。

有关更多信息,请参阅。

作业窗格。showInputDialog(“输入团队分数…”)返回试图存储在int中的字符串。这就是为什么会得到“不兼容类型”。

有关更多信息,请参阅。

解析在Java中不是隐式完成的。“解析是当您将字符串转换为整数时”不一定为true-解析意味着将一种类型的数据“解释”为另一种类型,以便用于进一步处理,例如
Date f=df.parse(Date\u String)
其中df是一个使用格式说明符初始化的SimpleDataFormat对象。这与字符串或整数无关。“我不希望用户输入字符串”-是的,你需要。您希望他们输入一个数字字符串。欢迎来到强类型世界。类型安全在大多数情况下是你的朋友和敌人。在这种情况下,它正确地告诉你你错了,所以它是你的朋友。不确定什么时候是你的敌人。解析在Java中不是隐式完成的。“解析是当你将一个字符串转换成一个整数”不一定是真的-解析意味着某种程度上“解释”一种类型的数据到另一种类型,以便它们可以用于进一步的处理,例如
Date f=df.parse(Date\u String)
其中df是一个使用格式说明符初始化的SimpleDataFormat对象。这与字符串或整数无关。“我不希望用户输入字符串”-是的,你需要。您希望他们输入一个数字字符串。欢迎来到强类型世界。类型安全在大多数情况下是你的朋友和敌人。在这种情况下,它正确地告诉你你错了,所以它是你的朋友。不确定什么时候是你的敌人。解释得很好,谢谢。我也喜欢数字下拉列表的想法,可以试试这个!解释得很好,谢谢。我也喜欢数字下拉列表的想法,可以试试这个!
public static void team()
    {
        int myScore;

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

        calculate(myScore);

    }