私は現在javaで継承について学んでいます。私はクラスGeometricObject持っている:私のプログラムでは、ユーザ入力ではなく、クラスGeometricObjectのデフォルト値を使用しています
public class GeometricObject {
private String color = "white";
private boolean filled = false;
/**Default construct*/
public GeometricObject() {
}
/**Construct a geometric object*/
public GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
/**Getter method for color*/
public String getColor() {
return color;
}
/**Setter method for color*/
public void setColor(String color) {
this.color = color;
}
/**Getter method for filled. Since filled is boolean,
so, the get method name is isFilled*/
public boolean isFilled() {
return filled;
}
/**Setter method for filled*/
public void setFilled(boolean filled) {
this.filled = filled;
}
}
をそして私はGemoetricObjectを拡張するクラスの三角形を持っている:私はプログラムを実行するために行くとき
import static java.lang.Math.sqrt;
public class Triangle extends GeometricObject{
double side1 = 1.0;
double side2 = 1.0;
double side3 = 1.0;
public Triangle(){
super();
}
public Triangle(double side1, double side2, double side3, String color, boolean isFilled){
super(color,isFilled);
if (side1 <=0||side2 <= 0||side3 <= 0) {
System.out.println("Sides must be greater than 0!");
}
if (side1 > (side2 + side3)||side2 > (side1 + side3)||side3 > (side1 + side2)) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
System.out.println("Invalid side lengths!");
}
}
public double getSide1(){
return side1;
}
public double getSide2(){
return side2;
}
public double getSide3(){
return side3;
}
public double getArea(){
double s = (side1 + side2+ side3)/2;
return sqrt(s*(s - side1)*(s - side2)*(s-side3));
}
public double getPerimeter(){
return side1 + side2 + side3;
}
}
、それが正常に動作します。境界線とエリアはすべて動作します。しかし、ユーザーが入力した値を出力するのではなく、プログラムは "白い三角形が1.0 X 1.0 X 1.0"を出力しています。だから、唯一の不履行値を使用してだが、
はEDITなぜ私は正直わからない:
import java.util.Scanner;
public class PA6 {
public static void main(String[] args) {
Triangle t = new Triangle();
Scanner input = new Scanner(System.in);
System.out.println("Enter side 1: ");
double side1 = input.nextDouble();
System.out.println("Enter side 2: ");
double side2 = input.nextDouble();
System.out.println("Enter side 3: ");
double side3 = input.nextDouble();
System.out.println("Enter a color: ");
String color = input.nextLine();
input.nextLine();
System.out.println("Is it filled? ");
boolean fill = input.nextBoolean();
input.nextLine();
System.out.println("The " + t.getColor() + " triangle is " + t.getSide1() + " X " + t.getSide2() + " X " + t.getSide3());
System.out.println("Area: " + t.getArea());
System.out.println("Perimeter: " + t.getPerimeter());
System.out.println("Filled? " + t.isFilled());
}
}
オフラインですが、これは問題ありません。 'Triangle'インスタンスを作成する場所でスニペットを共有できますか? – Mureinik
@Mureinik私は投稿を編集し、私の主な機能を追加しました。投稿をしたとき何らかの理由で忘れました。 – ANewProgrammer