私は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
これが私が見落としている初歩的なミスである場合はお詫び申し上げます。