【问题标题】:Iterating over an array with named objects [duplicate]迭代具有命名对象的数组[重复]
【发布时间】: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


【解决方案1】:

使用这个

dreiecke[0]= new Dreieck(1, 7, 5);
dreiecke[1] = new Dreieck(3, 4, 5);
dreiecke[2] = new Dreieck(5, 3, 3);

【讨论】:

  • 非常感谢!!
  • 我仍然需要编写一个方法“isGreaterThan”,用于比较一个三角形 (dreieck) 与另一个三角形的面积。如果它更大,它应该返回“true”。你能帮我解决这个问题吗?
  • 这不是“通过 cmets 提出的更多无关问题”社区。你为什么不试着先自己做作业,认真的?你从要求别人为你做作业中学到了什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-14
  • 2018-10-20
  • 2021-05-19
  • 1970-01-01
  • 2014-03-19
  • 2021-03-19
  • 2013-10-15
相关资源
最近更新 更多