我遇到了比较两个对象之间的变量年龄的问题。方法fight()
应该返回胜者,而胜者基本上是年龄较大的人。
但是,编译器返回:
<标识符>预计在第20行
这是我的代码:
public class Walter
{
int age;
int weight;
int id;
Walter(int sAge, int sWeight, int sId)
{
age = sAge;
weight = sWeight;
id = sId;
}
public String toString()
{
return "\nWalter #" + id + "\nAge: " + age + "\nWeight: " + weight + "\n";
}
public String fight(Walter, aWalter)
{
if(Walter(age)>aWalter(age))
{
return "The winner is #1";
}
else
{
return "The winner is #2";
}
}
public static void main (String[]args)
{
Walter a = new Walter(20,75,1);
Walter b = new Walter(10,25,2);
Walter c = new Walter(1,7,3);
System.out.println("omg\n"+a+b+c);
fight(a,b);
}
}
答案 0 :(得分:3)
您使用.
运算符访问成员值,而不是括号。此外,方法的定义存在问题 - “Walter”和“aWalter”之间存在冗余逗号。无论编译问题如何,还值得注意代码中的逻辑问题 - 您不处理具有相同年龄的两个实例:
public String fight(Walter aWalter) {
// Comma removed -----^
if (age > aWalter.age) { // Access fixed here
return "The winner is #1";
} else if (age < aWalter.age) { // Missing logic fixed here
return "The winner is #2";
} else {
return "Tie";
}
}
答案 1 :(得分:2)
你的方法应该得到Walter
类型的参数......但你没有传递一个。{你应该这样对待这个方法:
public String fight(Walter aWalter)
{
if(age>aWalter.age)
{
return "The winner is #1";
}
else
{
return "The winner is #2";
}
}
方法声明不能有无名变量(即只是一种类型,例如你所做的Walter
)
答案 2 :(得分:1)
你的战斗方法调用传递了2个Walter类型的对象,但是当你在战斗方法中比较这两个类型的walter对象的年龄时,在第20行有一个语法错误,你必须指定两个类型的参数沃尔特。我已经纠正并编写了正确无误的代码。
代码:
public class Exceptiontest
{
int age;
int weight;
int id;
Exceptiontest(int sAge, int sWeight, int sId)
{
age = sAge;
weight = sWeight;
id = sId;
}
public String toString()
{
return "\nWalter #" + id + "\nAge: " + age + "\nWeight: " + weight + "\n";
}
public static String fight(Exceptiontest aWalter,Exceptiontest bWalter)
{
if(aWalter.age > bWalter.age)
{
return "The winner is #1";
}
else
{
return "The winner is #2";
}
}
public static void main (String[]args)
{
Exceptiontest a = new Exceptiontest(20,75,1);
Exceptiontest b = new Exceptiontest(10,25,2);
Exceptiontest c = new Exceptiontest(1,7,3);
System.out.println(fight(a,b));
}
}