【问题标题】:operator < is undefined for the argument type(s) Integer, int error运算符 < 未定义参数类型 Integer, int error
【发布时间】:2023-04-10 19:05:01
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你应该把num的类型从Integer改为int。
  • 第一件事:永远不要以大写字母开头的方法名。您的代码在我的 Eclipse 中运行良好。
  • 你能解释一下吗..?我知道(原始类型)和整数(类)之间的基本区别,但它在这里如何影响..?
  • 不可重现,这是真实的代码吗?

标签: java sorting


【解决方案1】:

您的问题具有不同性质。

我只是将您的代码放在我的 Eclipse NEON(使用 Java8)中。你的代码编译很好;没有显示任何问题。

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

所以答案很可能是:您使用的是 过时 版本的 eclipse。

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

当那个 Eclipse Java 编译器告诉你 Integer 不能转换为 int 时;那么可能的解释是:

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

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

【讨论】:

  • 我刚刚在 Mars 中检查过,它工作正常。它确实必须是石器时代的版本。
  • 另一种可能性:即使提问者可能有更新的 Eclipse 和更新的 Java 版本,编译器合规级别在 Eclipse 中可能设置为 1.4 或更低。
  • 哦,真的。我会在一秒钟内更新我的答案!非常感谢!
【解决方案2】:

2 个解决方案:

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

【讨论】:

    【解决方案3】:

    试试这个:

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

    或者如果你想使用整数:

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

    在 Java 中,'int' 类型是原始类型,而 'Integer' 类型是对象,这意味着您不能像使用简单的 int 那样使用它。

    【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • 在现代 Java 版本中,您可以比较 Integer 和 int。
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 2018-06-30
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    相关资源
    最近更新 更多