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 == 会导致未定义的行为?