【发布时间】:2018-03-25 13:29:07
【问题描述】:
我必须遍历 3 个三角形(Dreieck x,y,z,它们有这些名称是必要的),我希望它们在一个数组中。
我写了一个方法“check If Valid”来检查是否可以构造这些三角形。如果可能,它应该返回“true”。我已经编写了一个 foreach 循环,我希望对于数组 dreiecke 中的每个三角形,如果可以构造它,它应该打印“true”,如果不可能,它应该打印“false”。在我的情况下,它会抛出一个NullPointerException。
初始化数组有问题吗?
public class DreieckTest {
public static void main(String[] args) {
Dreieck[] dreiecke = new Dreieck[3];
//triangle
Dreieck x = new Dreieck(1, 7, 5);
Dreieck y = new Dreieck(3, 4, 5);
Dreieck z = new Dreieck(5, 3, 3);
for(Dreieck dreieck: dreiecke) {
System.out.println(dreieck.istGültig());
}
}
}
这里是 Dreieck 类:
public class Dreieck {
// attribute
private int a;
private int b;
private int c;
public Dreieck(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
//check if possible
public boolean istGültig() {
if (a + b > c ^ a + c > b ^ b + c > a) {
return true;
} else {
return false;
}
}
【问题讨论】:
-
您永远不会将 x、y 和 z 对象添加到您创建的数组中。所以数组将只包含空值。
-
也将 ^ 更改为 &&
-
@mlecz 你确定 && 是他的意图吗? “a + b > c && a + c > b && b + c > a”似乎不可能是真的。
-
@OHGODSPIDERS 是的,因为它也应该是 >=。我们擅长一起调试的人。也许一些结对编程?
-
谢谢!所以最好加上“私有字符串名”和“字符串名”+this.name=name;在构造函数中声明三角形“x”、“y”和“z”?
标签: java arrays object foreach