运算符<未定义参数类型Integer,int error

时间:2017-05-10 08:05:26

标签: java sorting

我正在尝试编写一个代码来获取输入字符串的重复次数。

没有写太多代码,但这是我的代码:

public class MultipleCopiesString {
    public static void StringCopy(String inp, Integer num) {
        for (int i = 0; i < num; i++){
        }
    }
}

我在循环(i < num)中遇到错误,我想知道它为什么会出现以及如何解决它。

Java版本为1.8并在eclipse上创建代码。

3 个答案:

答案 0 :(得分:7)

您的问题具有不同性质。

我只是在我的eclipse NEON(使用Java8)中放下你的代码。你的代码编译很好;没有出现任何问题。

因为Java足够聪明(到现在为止)了解您想要比较两个 int 值。它隐式地将Integer num 参数转换为基本类型int。 (称为auto-boxing resp. un-boxing)。

所以最有可能的答案是:你正在使用eclipse的过时的版本。

含义:eclipse有自己的 Java编译器。因此,在讨论提供给您的编译器错误时,您正在使用的JRE / JDK版本并不重要。因为这些消息来自内置 eclipse Java编译器。

当eclipse Java编译器告诉你Integer无法转换为int时;然后可能的解释是:

  • 你正在使用&#34;石器时代&#34;的日食版本。确切地说:Java 1.5添加了自动装箱功能。所以你有一个不支持Java 1.5的日食(看起来极不可能!)......
  • 或者您正面临其他一些配置问题。例如,您将 compliance level 设置为Java 1.4(这没有任何意义;但会解释您正在查看的错误消息)。

长话短说:检查你的日食版本;当它过时时 - 转到eclipse.org,并安装eclipse的最新版本。如果您使用的是最新版本的eclipse,请检查您的工作区/项目设置。

答案 1 :(得分:2)

试试这个:

public class MultipleCopiesString {

    public static void stringCopy(String inp, int num) {

        for (int i=0; i < num;i++){

        }
    }

}

或者如果你想使用Integer:

public class MultipleCopiesString {

    public static void stringCopy(String inp, Integer num) {

        for (int i=0; i < num.intValue();i++){

        }
    }

}

在Java中,&#39; int&#39; type是一个原语,而&#39; Integer&#39; type是一个对象,意味着你不能像使用简单的int一样使用它。

答案 2 :(得分:2)

2个解决方案:

  • 使用int而不是Integer
  • 使用Integer类的intValue()方法,如下所示:num.intValue()