【问题标题】:Set & Get methods - Java [closed]设置和获取方法 - Java [关闭]
【发布时间】:2014-10-26 21:38:28
【问题描述】:

我是 Java 新手,已经设置了一些要完成的任务,到目前为止,我已经完成了如下所示的第一部分:

"1. 设计一个具有以下属性的类手册:

序列号-字符串,-默认:??????

标题 - 字符串,- 默认:无标题

作者 - 字符串,- 默认值:未知

编写一个构造函数和一个方法以在控制台上打印手册的详细信息。 "

代码:

public class Manual {

    String serialNumber, title, author;

    public static void main(String [] args){
        Manual man= new Manual();
        man.printDetails();
    }

    public Manual(){
        serialNumber = "??????";
        title = "Untitled";
        author = "Unknown";
    }

    public void printDetails(){
        System.out.println("Serial Number = " +serialNumber+" Title = "+ title+" Author = "+author);}



}

对于下一部分,我被要求:

"2. 通过编写以下附加方法来修改您的 Manual 类:设置和获取 Manual 属性的方法

一种向用户询问手册详细信息的方法

一个 toString() 方法。 "

到目前为止,我已经尝试了该部分的 set & get 方法部分,我的代码如下:

public class Manual {

    String serialNumber, title, author;

    public static void main(String [] args){
        Manual man= new Manual();
        man.printDetails();
    }

    public Manual(){
        serialNumber = "??????";
        title = "Untitled";
        author = "Unknown";
    }

    public String getserialNumber(){
        return serialNumber;
    }

    public String gettitle(){
        return title;
    }

    public String getauthor(){
        return author;
    }

    public void setserialNumber(String serialNumber){
        serialNumber = ??????;
    }

    public void settitle(String title){
        title = Untitled;
    }

    public void author(String author){
        author = Unknown;
    }

    public void printDetails(){
        System.out.println("Serial Number = " +serialNumber+" Title = "+ title+" Author = "+author);}



}

谁能告诉我到目前为止我的代码是否正确以及是否需要进行任何更改。此外,我们将不胜感激任何对后续任务的帮助。

谢谢

【问题讨论】:

  • 您可以询问编码中的特定问题,而不是一般问题。您不能指望 stackoverflow 的人为您的作业编写完整的代码。如果您遇到代码中的错误,并且无法在线找到或无法找到解决方案,您一定会得到帮助。
  • 那么..问题是什么?除了它甚至不会编译的事实。提示:作者“setter”中的author = Unknown 应该是this.author = author。对于初学者来说,Unknown 是一个未知标识符。其次,参数变量隐藏了实例成员变量,这就是为什么 this. 很重要。相同的更改适用于其他“二传手”。最后是成员变量author和方法author有冲突。
  • @ArslanAli 我不希望有人为我做这项工作。我只是确保清楚地显示我的所有工作以避免混淆,我只是在接下来的任务中寻求帮助作为建议的邀请,而不是答案

标签: java methods get set tostring


【解决方案1】:

好吧,我认为您的代码无法编译!? getter/setter 的目的是更改(设置)或获取对象。 你的 setter 应该是这样的:

public void setTitle(String title){
        this.title = title;
}

或者这个:

public void setTitle(String anotherVariableName){
        title = anotherVariableName;
}

【讨论】:

  • 感谢您的回复,我已对设置方法进行了建议的更改。当我运行代码时,它会打印到控制台:“Serial Number = ?????? Title = Untitled Author = Unknown”是因为我设置了“Author = unknown”还是从上面设置的事实在我定义变量并添加打印方法的代码中?
  • 您没有定义任何变量。你明白二传手应该做什么吗?它将参数分配给类变量。作者=未知应该做什么?按照我上面的建议编辑所有设置器。
  • 我发布的内容不是在顶部设置的变量吗? author = unknown 是 author 的默认值,直到用户输入新作者(下一阶段)
  • 是的,他们是。但正如您所写,这些是 默认 值。如果您想稍后更改它们,请使用 setter。
【解决方案2】:

你在正确的轨道上。我可以看出你对你的二传手感到困惑。 Title、Author 和 Serial Number 是整个类都可以访问的变量,因此在您的 setter 中,您可以直接将值放入其中。在您的设置器的参数中,您应该使用与这些变量的名称不同的名称。例如:

public void setTitle(String t)
{
    title = t;
}

该函数将通过其参数(String t)传递一个字符串,并将该值放在标题中。现在,您将默认值放入变量设置器中,这是不正确的。默认值适用于您正确执行的默认构造函数。为了帮助您进一步了解,我将举一个示例来说明您的测试类可能是什么样的:

Manual myManual = new Manual(); //now that the Manual Object has been instantiated, 
                                //the variables contain the default values from your 
                                //default constructor.

myManual.setTitle("Some Title"); //"Some Title" was passed through the parameters of the 
                                 //setTitle method, and the title variable in Manual is equal
                                 //that value

附带说明,您始终可以将方法、变量等标题中第一个单词后面的单词开头大写。setTitle、getAuthor 等


编辑:

代码的第一个 sn-p 是您的 setter 在 Manual 类中的外观。您应该将所有设置器更改为在格式上看起来相似。包含所有 cmets 的后几行将在 main 方法中。

另外,我查看了您的 pastebin 代码,您仍在将设置器中的变量设置为默认值。这是不正确的。您应该将变量设置为通过参数传递的任何内容。

【讨论】:

  • 感谢您的回复,我已尝试进行建议的更改,这是我的更新代码:pastebin.com/FC2hg4H7 - 抱歉,如果仍有错误,我不确定我所做的是否正确: (
  • 另外,我将在哪里实现您的代码 sn-p 示例?在 Manual 类中?
  • 我编辑了我的评论。
【解决方案3】:

不正确:

  1. 您的方法名称不符合方法命名规则,因为它们不是驼峰命名法。
  2. 有一种方法“author”可以设置作者。它应该是:'setAuthor'。
  3. 'settitle' 和 'author' 方法中的 'Unknown' 是什么?

你有没有试过编译它?!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多