【问题标题】:The error " Cannot resolve method 'println(void)' " is displayed when calling a method in System.out.println在 System.out.println 中调用方法时显示错误“Cannot resolve method 'println(void)'”
【发布时间】:2020-06-14 16:54:24
【问题描述】:

Person 类:

public class Person {

    public Person() { }

    public void isTheSamePerson (Person p){
       if (p.equals(p)) {
           System.out.println("They have the same names !!!");
       } else{
           System.out.println("They have different names !!!");
       }
    }
}

驱动类:

public class Driver {

    public static void main(String[] args) {
        Person Persona1 = new Person();
        Person Persona2 = new Person();
        System.out.print(Persona1.isTheSamePerson(Persona2));
    }
}

什么时候 我正在尝试在System.out.println() 中调用isTheSamePerson() 方法。我收到错误“无法解析方法'println(void)'”

【问题讨论】:

  • isTheSamePerson 方法不返回任何内容,因此无法调用 println 方法。
  • print 想要一个字符串,你将方法的结果传递给函数是TheSamePerson,它是无效的。错误是在告诉你到底是什么问题。

标签: java object intellij-idea methods equals


【解决方案1】:

你的代码中有一些事情是关闭的......首先就像其他评论所说的你不应该在 system.out.println 内部调用该方法,因为它已经将在方法内部打印结果。

第二件事是你的平等比较。

  if (p.equals(p)) { 

您正在将对象与自身进行比较,这是错误的。您可能想要比较对象的实例,看起来您正在尝试比较名称,所以可能类似于

if(this.name.equals(p.getName())){

}

【讨论】:

    【解决方案2】:

    isTheSamePerson() 方法的返回类型为 void。

    但是,System.out.print() 需要一个字符串类型的对象。

    此外,isTheSamePerson() 总是打印相同的消息,因为它只需要一个 Person 并将其与自身进行比较。

    【讨论】:

      【解决方案3】:

      为什么要在 println 方法中调用它

      而不是 System.out.print(Persona1.isTheSamePerson(Persona2));

      写 Persona1.isTheSamePerson(Persona2);

      你应该得到预期的输出。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-27
        • 2016-12-02
        • 1970-01-01
        • 2011-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多