将吸气剂纳入静态方法时遇到麻烦

时间:2019-04-30 23:55:27

标签: java static accessor mutators

我的第一个目标也是写一个代表一本书的类,并写一个getFinishedPercent方法。我相信这都是正确的。

我的第二个目标是用一个名为compareBooks的静态方法编写一个类,该方法接收两个书籍对象作为参数,并打印出已阅读最多的书籍标题(按百分比)。如果两个百分比相同,则将打印出来。 “哇,打领带!”。

我编写了Book类,其中包含我的字段,getter和mutators,但是我不确定如何将其合并到我的compareBooks类中。

图书班

 public class Book {

private String title; 
private String author; 
private int pages; 
private int lastPageRead; 

public Book(String title, String author, int pages, int 
 lastPageRead) {
    this.title = title; 
    this.author = author;
    this.pages = pages;
    this.lastPageRead = lastPageRead;

}
public String getTitle() {
    return title;
}
public String getAuthor() {
    return author;
}
public int getPages() {
    return pages;
}
public int lastPageRead() {
    return lastPageRead;
}
public double getFinishedPercent() {
    double percent = 0;
    percent = lastPageRead / pages;
    return percent;
}
 }

compareBooks类

 public class compareBooks {

public static void main(String [] args) {

    Book book1 = new Book("Building Java Programs", "Stuart 
 Reges & Marty Stepp", 1194, 586);
    Book book2 = new Book("Java is hard","Brian May", 1334,  
 23);   

 }
 }

3 个答案:

答案 0 :(得分:0)

{{1}}

您可以执行此操作。在这种情况下,如果您的方法是静态的(或不是静态的)则无所谓。

答案 1 :(得分:0)

尝试一下:

class compareBooks {

public static class Book {

    private String title;
    private String author;
    private double pages;
    private double lastPageRead;

    Book(String title, String author, int pages, int
            lastPageRead) {
        this.title = title;
        this.author = author;
        this.pages = pages;
        this.lastPageRead = lastPageRead;

    }
    public String getTitle() {
        return title;
    }
    public String getAuthor() {
        return author;
    }
    public double getPages() {
        return pages;
    }
    public double lastPageRead() {
        return lastPageRead;
    }
    public double getFinishedPercent() {

        return lastPageRead / pages;

    }
}

public static void main(String [] args) {

    Book book1 = new Book("Building Java Programs", "Stuart Reges & Marty Stepp",
            1194, 586);

    Book book2 = new Book("Java is hard","Brian May", 1334,
            23);


    System.out.println(book1.getFinishedPercent());

  }
}

答案 2 :(得分:0)

对于仍然遇到此问题的任何人,Victor的解决方案看起来都不错,我认为OP非常接近正确的解决方案。 OP每次获得相同结果的原因是因为getFinishedPercent()将较小的整数除以较大的整数,并且由于我们仅处理整数,因此每次将结果均截断为0,然后将其保存为事实加倍。无需强制转换甚至不声明其他变量的简单解决方法是替换:

read -r var1 var2 < <(external_tool | awk -v ORS=' ' '$1~/^(id1|id2)$/{print $2}')

# check variables
declare -p var1 var2

...与...

public double getFinishedPercent() {
    double percent = 0;
    percent = lastPageRead / pages;
    return percent;
}

对于那些研究过此作业问题并且是整数除法主题的新手的人,这里是有关Java基本数学的快速复习页面:https://mathbits.com/MathBits/Java/DataBasics/Mathoperators.htm