如何比较方法中的两个实例变量?

时间:2016-12-10 19:29:36

标签: java compiler-errors

我遇到了比较两个对象之间的变量年龄的问题。方法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);

    }
}

3 个答案:

答案 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));

}

}