Rectangle.java不会返回正确的长度和宽度

时间:2016-02-18 20:11:04

标签: java rectangles getmethod

我是stackoverflow的新手,我正在为我的一个类(特别是CSC 202J)开发一个项目,我差不多完成了,但是我遇到了一个小问题 - 输入功能不是工作正常。我编写了这个,以便矩形的默认宽度和长度为1.0,但是当我调用任何一个get方法时,我看到两个值都没有改变。我将提供我的代码(以及驱动程序类和赋值的要求,以及测试运行的输出。

分配:

  

创建一个Rectangle类。该类具有属性长度和宽度   默认为1.提供计算矩形周长和面积的方法   提供长度和宽度的set和get方法。设定方法   应验证长度和宽度是否都是大于或等于0.0且小于20.0的浮点数   编写一个程序来测试类Rectangle。

示例输出:

1. Set Length
2. Set Width
3. Exit
Choice: 1
Enter Length: 10
Length: 10.00
Width: 1.00
Perimeter: 22.00
Area: 10.00
1. Set Length
2. Set Width
3. Exit
Choice: 2
Enter Width: 15
Length: 10.00
Width: 15.00
Perimeter: 50.00
Area: 150.00
1. Set Length
2. Set Width
3. Exit
Choice: 1
Enter Length: 1
Length: 1.00
Width: 15.00
Perimeter: 32.00
Area: 15.00
1. Set Length
2. Set Width
3. Exit
Choice: 3

类:

import java.util.Scanner;

public class RectangleTest {
public static void main (String[] args)
{
   int response = 0;
   Scanner userInput = new Scanner(System.in);
   Rectangle r = new Rectangle();

     do{

      System.out.println("1. Set Length");
      System.out.println("2. Set Width");
      System.out.println("3. Exit");
      System.out.println("Choice: ");
      response = userInput.nextInt();

        if(response == 1)
        {
            System.out.println("Enter Length: ");
            r.setLength(userInput.nextInt());
            r.toString();
            System.out.println("Length: " + r.getLength());
            System.out.println("Width: " + r.getWidth());
            System.out.println("Perimeter: " + r.perimeter());
            System.out.println("Area: " + r.area());
        }
        if(response == 2)
        {
            System.out.println("Enter Width: ");
            r.setWidth(userInput.nextInt());
            r.toString();
            System.out.println("Length: " + r.getLength());
            System.out.println("Width: " + r.getWidth());
            System.out.println("Perimeter: " + r.perimeter());
            System.out.println("Area: " + r.area()); 
        }
      }
    while(response != 3);
    System.exit(0);
  }

}



public class Rectangle {
    private double length;
    private double width;

public Rectangle(){
    this.length = 1.0;
    this.width = 1.0;
  }

public double getLength(){
    return this.length;
  }

public double getWidth(){
   return this.width;
  }

public boolean setLength(double length){
   if (length > 0.0 && 1 < 20.0){
      return true;
   }
    return false;
 }

public boolean setWidth(double width){
    if(width > 0.0 && width < 20.0){
       return true;
   }
    return false;
}

public double perimeter(){
   return 2 * (this.length + this.width);
}

public double area(){
   return this.getLength() * this.getWidth();
}

@Override
public String toString(){
   return "Length: " + this.length +"\tWidth: " + this.width;
}

}

测试运行输出:

1. Set Length
2. Set Width
3. Exit
Choice: 
1
Enter Length: 
10
Length: 1.0
Width: 1.0
Perimeter: 4.0
Area: 1.0
1. Set Length
2. Set Width
3. Exit
Choice: 
2
Enter Width: 
14
Length: 1.0
Width: 1.0
Perimeter: 4.0
Area: 1.0
1. Set Length
2. Set Width
3. Exit
Choice: 
3

如果这是一个我忽视的菜鸟错误,我道歉。

2 个答案:

答案 0 :(得分:0)

您永远不会在setXXX()方法中设置值。在您的代码中加入this.width = widththis.length = length

public class Rectangle {
    private double width;
    private double length;

    public boolean setWidth(double width) {
        if(width >= 0.0 && width < 20.0) {
            this.width = width; // <<< You need this line ...
            return true;
        } else return false;
    }

    public boolean setLength(double length) {
        if(length >= 0.0 && length < 20.0) {
            this.length = length; // <<< ... and this one, too!
            return true;
        } else return false;
    }
}

答案 1 :(得分:-1)

要更改矩形类的值,您必须执行以下操作:

public void setwidth(double width){
    if (width => 0.0 && width < 20.0){
        this.width = width;
    }
}

同样适用于长度。目前,您的代码返回一个布尔值,指示输入宽度是否在特定值内。 set方法不需要返回任何内容。

我注意到你的代码中的另一个错误,在setLength方法中;

public boolean setLength(double length){
   if (length > 0.0 && 1 < 20.0){
      return true;
   }
    return false;
   }

您是否打算在if语句中键入length if (length> 0.0 && 1 < 20.0)

另一个注意事项:在你的作业描述中,声明宽度和长度需要大于或等于零&#34;,所以在代码中if语句看起来像if (width >= 0.0 && width < 20.0)。注意大于或等于符号。