我的Java代码没有什么问题。我正在使用下面的代码,但Eclipse总是提示相同的消息“参数类型Test1,int的运算符未定义”。但是如果我将代码更改为“System.out.println(test1”“100);”或“System.out.println”(“100 test1”)或“System.out.println(100”“test1);”,没有问题。
有人对此有想法吗?请帮忙。多谢各位,;
public class Test {
public static void main(String[] args) {
Test1 test1=new Test1("abc",12);
System.out.println(test1+100+"");//this is where i got the error!
//all three lines below got no problems.
//System.out.println(test1+""+100);
//System.out.println(""+100+test1);
//System.out.println(100+""+test1);
}
}
class Test1
{
private int age;
private String name;
public Test1(){}
public Test1(String name,int age)
{
this.name=name;
this.age=age;
}
public String toString()
{
return name+""+age;
}
}
正如编译器所说,没有为Test1
类定义操作符。它仅为
String
s(串联)和数字类型(加法)定义。
如果运算符的第一个操作数既不是
字符串
也不是数字类型,则编译器不知道该做什么。
另一方面,如果第一个操作数是字符串
,编译器将运算符视为字符串
串联,并通过调用toString()
将Test1
实例(第二个操作数)转换为字符串
。
因此
System.out.println(""+100+test1);
作品
以下工作也将起作用:
System.out.println(""+test1+100);
或
System.out.println(test1.toString()+100);
Java不支持运算符重载,除了少数有限的情况,我所能想到的就是处理String
串联。你能行
System.out.println(test1.toString() + 100 + "");
您的其他法律示例也涉及String
串联(当第一个术语是String
时,它会促进其他术语-当然还有String
Object
或String
>int
是唯一可能的,因为Java语言/运行时显式允许String
)的运算符重载。
是的,那是违法的。
因为您试图添加一个对象和一个在现实世界中不可能的整数值。但当你这么做的时候
test1+ ""+ 100
整个过程更改为字符串concatation,当您添加对象和字符串时,将调用该对象的toString方法并将其添加到字符串中。
因此,看起来您希望将对象中的某些内容添加到给定值。因此,从对象中获取该值,然后求和。
System.out.println(test1.getAge()+100+""); // have getAge implemented
或者如果你想打印整个东西,使用实现的toString,然后总结。
作为旁注,当您不使用连接,只传递普通对象时,将调用toString方法并打印该对象。
System.out.println(test1);
在我的代码中,我一直得到这样的错误:操作符!=对于参数类型boolean和int是未定义的,我不知道该怎么做来修复它。该错误出现在eclipse内部以及启动时 如有帮助,我们将不胜感激:)谢谢!
下面的方法中不断出现错误“The operator-is undefined for The argument type double[],double”,我不知道为什么或如何修复它。 特别是在以下行:“如果((targetX-x)
问题内容: 我得到这个错误 问题答案: 具有无效的返回类型。更改方法的返回类型以返回值
问题内容: 我只是试图制作一个简单的类,让我弄清楚文件的长度: 我遇到了一个问题 我得到错误: 未为参数类型定义运算符!= int,null 有什么想法为什么会阻止这种情况吗? 问题答案: Java中的原始类型不能为。如果要检查0,请执行。
是否有任何方法可以使用Retrofit并将参数运算符符号替换为我自己的运算符(例如)。 这将创建 但我需要 谢啦
我这里有这个代码: 但我得到了错误信息: 接线员 为什么呢?如何修复代码? 以下是代码的文本形式: