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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了operator <未定义参数类型Integer,int error相关的知识,希望对你有一定的参考价值。

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

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

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

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

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

答案

你的问题是不同的。

我只是在我的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解决方案:

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

试试这个 :

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那样使用它。

另一答案

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

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

public class MultipleCopiesString {

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

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

      }
  }

}

以上是关于operator <未定义参数类型Integer,int error的主要内容,如果未能解决你的问题,请参考以下文章

错误:“int”和“<未解析的重载函数类型>”类型的无效操作数到二进制“operator/”

在哪些情况下 std::optional operator == 会导致未定义的行为?

见微知著——从自定义类型的operator==说起

C++中operator用法

operator<<(ostream&, const BigUnsigned<I>&) 必须只有一个参数

如何解决“未捕获的类型错误:无法读取未定义的属性'参数'”reactjs + django