【问题标题】:My return statement doesn't use user inserted data我的返回语句不使用用户插入的数据
【发布时间】:2019-11-07 14:50:48
【问题描述】:

我有第一个方法,它应该返回引用实例变量的书名。这工作正常,但它让我选择插入的标题,而不是立即使用用户输入的标题,有没有办法让它返回标题而无需我通过在下拉列表中选择标题的额外步骤?

我有第二种方法,它应该通过查找 (BookChapters) 和 (BookMark) 之间的差异来返回剩余章节,但是当我运行它时它不会返回差异,并且像第一种方法一样它让我选择下拉列表中的其余章节。

这是一个介绍性的编程课程,我尝试查找有关返回数学语句的 java 文档,但我没有取得太多成就。

private String BookTitle;
private int BookChapters;
private int BookMark;
public int RemainingChapters;

// 实例变量 //

public Textbook()
{
    // initialise instance variables
    BookTitle = "Lord of the Flies";
    BookChapters = 3;
    BookMark = 0;  
}

// 我的构造函数 //

public String getTitle(String BookTitle)
{
    return BookTitle; 
}

//我第一个返回书名的方法 //

public int getRemainingChapters (int RemainingChapters)
{
    return RemainingChapters = BookChapters - BookMark;
}

//我返回剩余章节的第二种方法//

https://imgur.com/a/mrnZBru

这张图片应该可以帮助我解释关于第一种方法的问题

【问题讨论】:

  • Getter 方法不应带参数。您的 getTitle 方法返回它自己的参数,而不是对象的字段。将其声明为public String getTitle() { ... },不带任何参数。
  • 另外,你没有return RemainingChapters = BookChapters - BookMark。要么进行赋值,要么返回一个值,不要将两者混合在一个操作中。它可能会起作用(我认为它不会起作用),但至少会让人感到困惑
  • 这能回答你的问题吗? How do getters and setters work?
  • @kaya3 现在我的返回语句应该如何返回用户输入的内容?
  • 您的退货声明不应更改;只要没有另一个具有相同名称的变量隐藏它,它就会正确返回该字段(在构造函数中设置)。

标签: java bluej


【解决方案1】:
public String getTitle() { 
    return BookTitle;  }

Getter 不应接受参数,而应返回对象(类级别)变量。

也许你打算写一个这样实现的setter:

public String getTitle(String BookTitle) {
    this.BookTitle = BookTitle;  }

this.BookTitle = 书名;可以解释为将对象BookTitle设置为函数参数BookTitle。

同理,这个函数应该如下

public int getRemainingChapters ()
{
    return (BookChapters - BookMark);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 2012-08-02
    • 2021-11-20
    • 1970-01-01
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多