Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法将布尔方法调用到另一个类中_Java - Fatal编程技术网

Java 无法将布尔方法调用到另一个类中

Java 无法将布尔方法调用到另一个类中,java,Java,我无法将布尔方法调用到另一个类中。无论我尝试什么,要么程序找不到变量,要么警告我在静态上下文中尝试使用非静态变量 我试图访问的布尔代码 public boolean isSame(String title, String author) { return this.title.equals(title) && this.author.equals(author); } 我用来访问该方法的(当前)代码(我知道它错了) 本质上,copyCount方法(

我无法将布尔方法调用到另一个类中。无论我尝试什么,要么程序找不到变量,要么警告我在静态上下文中尝试使用非静态变量

我试图访问的布尔代码

public boolean isSame(String title, String author)
{
    return this.title.equals(title) &&
           this.author.equals(author);
}
我用来访问该方法的(当前)代码(我知道它错了)

本质上,copyCount方法(来自“Library”类)应该获取2个字符串参数,并使用isSame方法(来自“Book”类)测试它们。如果书籍详细信息与给定的匹配,isSame将返回true,如果不匹配,则返回false

如何从另一个类正确引用isSame方法?谢谢

如何从另一个类正确引用isSame方法

看起来您需要一个
Book
类的实例

Book book = new Book("myTitle", "myAuthor");  // I'm just guessing there's a constructor like this
boolean same = book.isSame("anotherTitle", "anotherAuthor");
// 'same' will be false

如果两个方法在不同的类中。

您只能访问静态方法而不创建类的对象。如果isSame方法是静态的,则可以使用Book.isSame()访问is,但如果isSame方法不是静态的,则需要创建Book类的对象,然后使用该对象访问isSame方法

请参阅下面的代码:

Book book = new Book();
boolean result = book.isSame("title","author");

如果有,请在构造函数中传递变量。顺便说一下,代码只是显示流程的一个示例。

根据要求,前面的答案可能是正确的,但这听起来像是需要一个
等于
方法

按照惯例,Java对象都有一个
equals
方法,当您希望确定两个对象的相等性时,应该重写该方法。在这里,由于要将
String
s附加到相等,因此很难推断相等是您真正想要的

下面是一个例子:

public boolean equals(Book other) {
    return null != other && this.title.equals(other.title) &&
       this.author.equals(other.author);
}

您需要修改
copyCount
方法,以获取
Book
的一个实例,而不是
author
title
,但这将是一个总体上更好的设计。

我为这本书提供的唯一构造函数是:books=new ArrayList();我应该提到这一点。我无法指定书名或作者,因为这取决于所创建的内容。当我使用BlueJ软件时,我感到非常困惑,它利用了对象工作台。你在
类上有
setAuthor()
setTitle
方法吗?(您可以使用它们而不是在构造函数中传递作者/标题。)
public void numberOfCopies(String title,String author){int numberOfCopy=0;for(Book a:books){if(isSame==true){numberOfCopy++;}System.out.println(numberOfCopy);}
这是我现在拥有的代码,我现在意识到我需要将ArrayList的每个组件与给定的author/title值进行比较。我没有setAuthor或setTitle方法,因为它们是在Book构造函数中定义的。但是,对于当前代码,它仍然没有找到isSame作为有效变量。我没有看到任何地方(问题或注释)将
isSame
声明为变量--我看到它被声明为方法。要使用该方法,您将始终需要(1)在实例上调用它(例如
myBook.isSame
)和(2)传递参数(例如
myBook.isSame(“foo”、“bar”)
)抱歉,我应该说方法而不是变量(这是非常新的)。你的建议奏效了!我实际上没有正确地调用该方法。这是代码的一部分,我需要它为(BookA:books){if(a.isSame(title,author)==true)运行
{
它现在完全按照预期的方式工作。非常感谢!我想撞到墙上,我确信从这里开始情况会变得更糟。!我无法创建Book类的对象,因为代码需要为创建的任何对象运行。我应该指定,此代码使用ArrayList(books=new ArrayList();)
public boolean equals(Book other) {
    return null != other && this.title.equals(other.title) &&
       this.author.equals(other.author);
}