「newTriangle();」と書いたときに、「oppgave1型の囲んでいるインスタンスにアクセスできません」というエラーが表示されます。どこで間違ったのか(三角形のクラスについて)説明するために、助けが必要です。私はjavaを始めたばかりです。よろしくお願いします。
public static void main(String[] args) {
Triangle T1 = new Triangle(1, 1, 1, "green", false);
Scanner input = new Scanner(System.in);
System.out.println("Enter three sides of the triangle: ");
double side1 = input.nextInt();
double side2 = input.nextInt();
double side3 = input.nextInt();
System.out.println("Enter a color: ");
String color = input.nextLine();
System.out.println("Enter true or false (to indicate triangle is filled or no): ");
String isFilled = input.nextLine();
}
public class GeometricObject {
//Data fields
private String color = "blue";
private boolean filled;
//The default geometricObject/constructor
public GeometricObject() {
this("No color", false);
}
//The geometricObject with the specified colour and filled value
public GeometricObject(String color, boolean filled) {
this.color = color;
this.filled = filled;
}
//Returning the colour
public String getColor() {
return color;
}
//Setting a new colour
public void setColor(String color) {
this.color = color;
}
//Returning the filled
public boolean isFilled() {
return true;
}
//Setting a new filled
public void setFilled(boolean filled) {
this.filled = filled;
}
public String toString() {
return (color + " - " + filled + " - ");
}
}
public class Triangle extends GeometricObject {
//Data fields
double side1 = 1.0;
double side2 = 1.0;
double side3 = 1.0;
//no-arg constructor
Triangle(){
this(0.0, 0.0, 0.0, "No color", false);
}
//A constructor that creates a triangle with the specified sides
public Triangle(double side1, double side2, double side3, String color, boolean filled) {
this.side1 = side1;
this.side2 = side2;
this.side3 = side3;
setColor(color);
setFilled(filled);
}
//Returning the sides
public double getside1() {
return side1;
}
public double getside2() {
return side1;
}
public double getside3() {
return side1;
}
//setting the new ones
public void setSide1(double side1) {
this.side1 = side1;
}
public void setSide2(double side2) {
this.side2 = side2;
}
public void setSide3(double side3) {
this.side3 = side3;
}
//getting the rule
/* public void setSide(double side1, double side2, double side3) {
if (((this.side1 + this.side2) > this.side3 ) && ((this.side2 + this.side3) > this.side1)
&& ((this.side1 + this.side3) > this.side2))
System .out.println("The rule (the sum of any two sides is greather"
+ " than the other side) is adhered");
} */
//Returning area
public double getArea() {
double p = ((side1 + side2 + side3) / 2);
double area = Math.sqrt(p * (p - side1) * (p - side2) * (p - side3));
return area;
}
//Returning perimeter
public double getPerimeter() {
return (side1 + side2 + side3);
}
public String toString() {
return (super.toString() + "Triangle: side1 = " + side1 + "side2 = " + side2 + " side3 = " + side3 +'\n'+
"Area i: " + getArea() + '\n' + "Perimeter is: " + getPerimeter()) ;
}
}
}
Triangle
は現在内部クラスです。つまり、それを作成するには、それを囲むクラスのインスタンスも必要です。簡単なオプション:
Triangle
、トップレベル(ネストされていない)クラスを。Triangle
(ネストされた/内部クラスの詳細については、Javaチュートリアルを参照してください。)
個人的には、最初の行動方針をお勧めします-ネストされたクラスは確かに便利ですが、ネストされたクラスから特別な利点がない限り、トップレベルのクラスを使用することをお勧めします。
また、あなたがいてもすることができ、それらのほとんど1つが公開されて(したがって、ファイルと同じ名前を持つ)私が名付けられ、独自のファイル内の各トップレベルのクラスを置く応じてお勧めしたい場合は、同じソース・ファイルに複数のクラスを置きますクラスに。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加