Java 写作课我错过了什么?

Java 写作课我错过了什么?,java,Java,到目前为止,我有一个项目,以下是我想要的成果: 测试1 及 测试2 以下是说明。“编写一个名为Book的类,其中包含标题、作者和页面的实例数据。定义Book构造函数以接受和初始化此数据。包括所有实例数据的setter和getter方法。包括返回如下字符串的toString方法: 例如: 编写一个BookTester类,从键盘获取作者、标题、页面,创建一个book对象并将上面的内容打印到屏幕上。我如何获得答案以显示图片Test1和Test2中显示的预期输出?还有,我缺少什么 书 pub

到目前为止,我有一个项目,以下是我想要的成果:

测试1

测试2

以下是说明。“编写一个名为Book的类,其中包含标题、作者和页面的实例数据。定义Book构造函数以接受和初始化此数据。包括所有实例数据的setter和getter方法。包括返回如下字符串的toString方法:

例如:

编写一个BookTester类,从键盘获取作者、标题、页面,创建一个book对象并将上面的内容打印到屏幕上。我如何获得答案以显示图片Test1和Test2中显示的预期输出?还有,我缺少什么

    public class Book {
        String author;
        String title;
        int pages;

        public Book(String a, String t, int p) {
        author = a;
        title = t;
        pages = p;
    }

        public String toString() {
        String output;
        output = ("Author: " + author + "\n");
        output = ("Title: " + title + "\n");
        output = ("Pages: " + pages + "\n");
        return output;
    }
}
图书测试员

    import java.util.*;
    public class BookTester {
    public static void main(String[] args) {
    String author;
    String title;
    int pages;
    Scanner scan = new Scanner(System.in);
    author = scan.nextLine();
    title = scan.nextLine();
    pages = scan.nextInt();
    Book book1 = new Book(author, title, pages);
    System.out.println(book1);
     }
     }
您应该对每个值进行concat(+)。否则将返回最后一个值(表示
页面:--

您应该对每个值进行concat(+)。否则将返回最后一个值(表示
页面:--
)。

请尝试以下操作:

public String toString() {
    String output = "Author: " + author + "\n" + "Title: " + title + "\n" + "Pages: " + pages + "\n";
    return output;
}
您一直在替换返回的
输出
字符串,而不是添加到字符串中。

尝试以下操作:

public String toString() {
    String output = "Author: " + author + "\n" + "Title: " + title + "\n" + "Pages: " + pages + "\n";
    return output;
}

您一直在替换返回的
输出
字符串,而不是将其添加到字符串中。

程序无法运行,因为您正在使用toString方法重写输出:

public String toString() {
    String output;
    output = ("Author: " + author + "\n");
    output = ("Title: " + title + "\n");
    output = ("Pages: " + pages + "\n");
    return output;
}

必须做几件事来解决这个问题

@override
public String toString() {
    String output;
    output += "Author: " + author + "\n";
    output += "Title: " + title + "\n";
    output += "Pages: " + pages + "\n";
    return output;
}
不要忘记@覆盖,这是一个很好的做法

最终建议: 利用IDE的特性生成toString方法总是一个好主意,不要手工编写


例如,我看到您正在使用Eclipse,如果您只需右键单击源代码并选择source>Generate toString

此IDE就可以这样做。程序无法运行,因为您正在用toString方法重写输出:

public String toString() {
    String output;
    output = ("Author: " + author + "\n");
    output = ("Title: " + title + "\n");
    output = ("Pages: " + pages + "\n");
    return output;
}

必须做几件事来解决这个问题

@override
public String toString() {
    String output;
    output += "Author: " + author + "\n";
    output += "Title: " + title + "\n";
    output += "Pages: " + pages + "\n";
    return output;
}
不要忘记@覆盖,这是一个很好的做法

最终建议: 利用IDE的特性生成toString方法总是一个好主意,不要手工编写


例如,我看到您正在使用Eclipse,如果您只需右键单击源代码并选择source>Generate toString

return String output
无效,则此IDE可以这样做。请更正您的答案。@grzesiekw My bad。不确定这是如何实现的!
return String output
无效。请更正您的答案@葛泽西:我的错,不知道那是怎么来的!