0

私はstackoverflowを初めて使用し、私のクラス(特にCSC 202J)のプロジェクトに取り組んでおり、ほぼ完了しましたが、小さな問題があります-入力機能が正しく機能していません。長方形のデフォルトの幅と長さが 1.0 になるようにプログラムしましたが、いずれかの get メソッドを呼び出すと、どちらの値も変更されていないことがわかります。コードを (ドライバー クラスと割り当ての要件と共に、テスト実行の出力と共に) 提供します。

割り当て:

クラス Rectangle を作成します。このクラスには長さと幅の属性があり、それぞれのデフォルトは 1 です。四角形の周長と面積を計算するメソッドを提供します。
長さと幅の両方に set メソッドと get メソッドを提供します。set メソッドは、長さと幅がそれぞれ 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

これが私が見落としている初歩的なミスである場合はお詫び申し上げます。

4

2 に答える 2

-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;
   }

lengthそれが言っているところにifステートメントを入力するつもりでしたif (length> 0.0 && 1 < 20.0)か?

別の注意: 割り当ての説明では、幅と長さは「ゼロ以上」である必要があると記載されているため、コードでは if ステートメントは のようになりますif (width >= 0.0 && width < 20.0)。以上の記号に注意してください。

于 2016-02-18T20:31:28.687 に答える