operator <未定义参数类型Integer,int error

问题描述 投票:0回答:4

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

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

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

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

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

java sorting
4个回答
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时;然后可能的解释是:

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

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


2
投票

2解决方案:

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

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中,'int'类型是一个原语,而'Integer'类型是一个对象,这意味着你不能像使用简单的int那样使用它。


1
投票

您无法将Integer数据类型与int数据类型进行比较。这是无效的。

您可以按如下所述重写代码:

public class MultipleCopiesString {

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

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

      }
  }

}