gpt4 book ai didi

java - 方法的返回值

转载 作者:行者123 更新时间:2023-12-01 14:46:07 25 4
gpt4 key购买 nike

我正在为我的作业编写一个程序,但对于我的 defaultFan 和 toString 方法,我收到一条错误,指出“方法声明无效;需要返回类型。但是我不确定如何解决这个问题。我尝试将 void 放在前面这两种方法都有效,但随后我收到错误消息,指出我无法将变量分配给慢速、中速和快速的最终变量。我不确定这是否正确。我该如何解决这个问题?

我也很难使用测试程序。我的教授希望我们使用一个测试程序来创建 2 个粉丝对象;第一个指定最大速度、半径 10、颜色黄色和状态。第二个指定中速、半径 5 蓝色和关闭状态,并通过调用风扇对象的 toString 方法来显示风扇对象。有人可以解释一下测试程序是如何工作的,以及我将如何为这个程序创建一个测试程序吗?这是我的代码:

public class fan {

private final int slow = 1;
private final int medium = 2;
private final int fast = 3;
private int speed;
private boolean fanOn;
private double radius;
private String color;

public void defaultFan( )
{
int speed = 1;
boolean fanOn = false;
double radius = 5;
String color = "blue";
}

public fan(final int slow, final int medium, final int fast, int
speed, boolean fanOn, double radius, String color) {

this.slow = slow;
this.medium = medium;
this.fast = fast;
this.speed = speed;
this.fanOn = fanOn;
this.radius = radius;
this.color = color;
}

public final int getSlow(){
return slow;
}

public final int getMedium() {
return medium;
}

public final int getFast() {
return fast;
}

public int getSpeed() {
return speed;
}

public boolean getfanOn() {
return fanOn;
}

public double getradius() {
return radius;
}

public String getcolor() {
return color;
}

public void setSlow(final int slow) {
this.slow = slow;
}

public void setMedium(final int medium) {
this.medium = medium;
}

public void setFast(final int fast) {
this.fast = fast;
}

public void setSpeed(int speed) {
this.speed = speed;
}

public void setFanOn(boolean fanOn) {
this.fanOn = fanOn;
}

public void setRadius(double radius) {
this.radius = radius;
}

public void setColor(String color) {
this.color = color;
}

public void toString() {
if(fanOn = true ) {
System.out.println("The speed of the fan is " + speed + ", the color
of the the fan is " + color + ", and the radius of the fan is " +
radius + ".");
}
else {
System.out.println("The fan is off but the color is " + color +"
and the radius is " + radius + ".");
}

}}

最佳答案

  1. 变量slowmediumfast是最终的;您可以在声明中设置它们中的每一个,并且不需要也不能重新初始化它们。您需要从构造函数中删除它们:

    public fan(int speed, boolean fanOn, double radius, String color) {
    this.speed = speed;
    this.fanOn = fanOn;
    this.radius = radius;
    this.color = color;
    }
  2. 现在,去掉 setSlowgetSlow 方法,等等。保留其他人。

  3. 您可能希望使用如下代码调用构造函数:

    fan myFan = new fan(/* medium */ 2, true, 10.0, "blue");
    // But see 4 and 5 below.
  4. 变量 slowmediumfast 不与 fan 的任何特定实例绑定(bind)>。所以,你想像这样声明它们:

    public static final int SLOW = 1;
    public static final int MEDIUM = 2;
    public static final int FAST = 3;
    // The constructor call becomes:
    fan myFan = new fan(fan.MEDIUM, true, 10.0, "blue");
  5. 通常,Java 中的类的名称大写。调用类Fan。将所有 fan 实例替换为 Fan

  6. toString 方法不应该这么啰嗦。通常,人们编写这些方法是为了帮助他们调试代码,而不是为用户提供友好的访问。仅报告实例变量的值,其中不包括 SLOWMEDIUMFAST。不要使用条件逻辑。

  7. 您的 toString 方法实际上覆盖了 Object 中的基本方法。 Java 会一直提醒您,直到您添加 @Override 注释。为了好玩,请编写您的 toString 代码,使用它,然后注释掉该代码。看看输出会发生什么。您将明白为什么需要重写 Object 中的方法。

    @Override
    public String toString() {
    return "Fan" + "[speed: " + speed +
    ",on: " + fanOn +
    ",radius: " + radius +
    ",color: " + color + "]";
    }
  8. 对于 future 的工作,请考虑使用 Java 自己的 Color 类而不是字符串。另外,请考虑编写您自己的名为 Speed 的 Java 枚举,而不是使用这三个常量。

  9. 问问自己,如果一切顺利,以及如果出现问题或类使用不正确,使用代码的人希望代码做什么。例如,也许 Fan 类应该遵守以下规则:

    • 如果我构造一个风扇,并询问它的速度,我会得到我输入的速度。
    • 同上,它是否打开、半径和颜色。
    • 如果我使用一个Fan,并对其一个实例变量调用 set 方法,然后使用 get 方法查询该变量,我将获得输入的值。
    • 如果我构造一个具有负半径或颜色为 nullFan,则构造函数会失败,并抛出 IllegalArgumentException。您的类(class)可能还没有涵盖这一点。
    • 同样,如果我调用 myFan.setRadius(-10.0),set 方法会引发相同的异常,并且 myFan 保持不变。
    • 如果我尝试将风扇的速度设置为SLOWMEDIUMFAST以外的速度>,这也应该失败。还记得关于枚举的建议吗?这是一个很好的理由。

有很多框架可以帮助软件测试;遗憾的是,人们在实践中做得还不够。但是查找 JUnit;您的 IDE 几乎肯定有方法帮助您创建 JUnit 测试。

关于java - 方法的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15424687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com