请帮我恢复理智!请看下面的程序。我打电话给这个程序正确运行。我正在寻找的预期结果是:
triangle 0, area = 4.0
triangle 1, area = 10.0
triangle 2, area = 18.0
triangle 3, area = 28.0
现在,我被困住的部分是在while
循环时t[x].setArea()
被调用。我无法克服当前编写该方法的方式。 出于某种原因,我认为应该这样写:
void setArea() {
t[x].area = (t[x].height * t[x].length)/2;
}
而不是目前的编写方式:
void setArea() {
area = (height * length)/2;
因为它是如何知道您指的是那个特定的t [x]而没有像这样直接调用它
t[x].area t[x].height t[x].length
请让我知道你的想法。非常混乱。
class Triangle {
double area;
int height;
int length;
public static void main(String[] args) {
int x = 0;
Triangle [] ta = new Triangle[4];
while (x < 4) {
ta[x] = new Triangle();
ta[x].height = (x + 1) *2;
ta[x].length = x + 4;
ta[x].setArea();
System.out.print("triangle "+x+", area");
System.out.println(" = "+ta[x].area);
x = x + 1;
}
int y = x;
x = 27;
Triangle t5 = ta[2];
ta[2].area = 343;
System.out.print("y = " + y);
System.out.println(", t5 area = "+ t5.area);
}
void setArea() {
area = (height * length)/2;
}
}
答案 0 :(得分:1)
如果你使用两个类,你需要做的事情会更清楚:
三角形对象:
public class Triangle {
int height;
int length;
double area;
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
void setArea() {
area = (height * length) / 2;
}
}
主要课程:
public class X {
public static void main(String[] args) {
int x = 0;
Triangle[] ta = new Triangle[4];
while (x < 4) {
ta[x] = new Triangle();
ta[x].height = (x + 1) * 2;
ta[x].length = x + 4;
ta[x].setArea();
System.out.print("triangle " + x + ", area");
System.out.println(" = " + ta[x].area);
x = x + 1;
}
int y = x;
x = 27;
Triangle t5 = ta[2];
ta[2].area = 343;
System.out.print("y = " + y);
System.out.println(", t5 area = " + t5.area);
}
}
现在您已经看到您无法再访问数组了。
但我建议不要存放该区域。
答案 1 :(得分:0)
方法setArea()
在Triangle
- 类中定义,这意味着Triangle
的所有实例都有自己的此方法版本,引用它自己的字段变量(即{ {1}},area
和height
)。
因此,当您致电length
时,ta[x].setArea();
方法会隐式地知道变量是指setArea
的变量。
答案 2 :(得分:-1)
在java中,每当调用类的方法时,都会传递此指针。所以你不需要这样做: t [x] .area =(t [x] .height * t [x] .length)/ 2
相反,已经写的是 area =(height * length)/ 2
工作正常,并且因为这个指针在幕后传递,所以代码可以正常工作并更新所需的实例。