Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算循环java的迭代次数_Java_If Statement_For Loop - Fatal编程技术网

如何计算循环java的迭代次数

如何计算循环java的迭代次数,java,if-statement,for-loop,Java,If Statement,For Loop,我必须实现这个方法,给出数组“planeta”中行星的数量 它返回“planeta.length-1”的值,而不是它应该返回的值(例如,我成功地添加了两个行星,它总是返回我在初始化它时给出的大小值)。我做错了什么 注意:我用NP初始化数组“planeta”,这意味着没有行星。当我添加新行星时,它们会进入第一个自由位置,从0开始,在数组“planeta”中。请帮忙!!!!!谢谢=) addPlanet方法: public void addPlanet(字符串planetName、BigInt x、

我必须实现这个方法,给出数组“planeta”中行星的数量

它返回“planeta.length-1”的值,而不是它应该返回的值(例如,我成功地添加了两个行星,它总是返回我在初始化它时给出的大小值)。我做错了什么

注意:我用NP初始化数组“planeta”,这意味着没有行星。当我添加新行星时,它们会进入第一个自由位置,从0开始,在数组“planeta”中。请帮忙!!!!!谢谢=)

addPlanet方法: public void addPlanet(字符串planetName、BigInt x、BigInt y、BigInt z){

如何初始化数组“planeta”: 私人行星noPlanet=新行星(“NP”)

/**
*创建一个没有相关行星和给定名称的新星系
*@param name银河系的名称
*/
公共Galaxy(字符串名称){
this.name=name;
//如果银河系中没有行星,那么它的阵列中就充满了行星NP,没有行星

对于(int i=0;i如果您像
Planet[]planeta=new Planet[12]那样声明数组;
数组的长度将始终为
12
。数组中已经填充了未初始化的值。在这种情况下,
null

改用
ArrayList planeta=new ArrayList();
。 您可以使用
planeta.add(new Planet());
添加新行星,并使用
planeta.size()
返回大小


如果你必须坚持使用静态数组,你应该测试索引在
for
循环中是否有
null
值,并在找到值时减小其大小。

最好使用
null
s而不是特殊值对象,即
新行星(“NP”)
。 我想这是你正在寻找的东西:

public class Galaxy {
  // Empty array of size = 10, i.e. { null, null, .. , null }
  private Planet[] planeta = new Planet[10];

  public Galaxy(String name) {
    this.name = name;
  }

  public int size() {
    int size = 0;

    for (int k = 0; k < planeta.length; k++) {
      // Is there a planet or is it empty?
      if (planeta[k] != null) {
        // There's a planet.
        size++;
      }
    }
    return size;
  }

  public boolean planetExists(String planetName) {
    // Go through the array looking for that planet...
    for (int k = 0; k < this.size(); k++) {
  // NOTICE that we're going only through the non-empty array elements,
      // but we'll check for null either way.
      if (planeta[k] != null && planeta[k].name().equals(planetName)) {
        // Found it.
        return true;
      }
    }

    // Didn't find the planet.
    return false;
  }

  public void addPlanet(String planetName, BigInt x, BigInt y, BigInt z) {
    if (!planetExists(planetName) && !complete()) {
      SpacePoint newSP = new SpacePoint(x, y, z);
      Planet newPlanet = new Planet(planetName, newSP);

      int position = this.size();
      planeta[position] = newPlanet;
    }
  }
}
公共类银河{
//大小为10的空数组,即{null,null,…,null}
私人行星[]行星a=新行星[10];
公共Galaxy(字符串名称){
this.name=名称;
}
公共整数大小(){
int size=0;
对于(int k=0;k
对于调试,大多数开发环境(IDE)在
Run>Run
命令中使用
Run>Debug
命令。首先,您需要设置断点,通常是通过
Run>Toggle Breakpoint
在所选行上。使用
Run>单步执行
Run>单步执行
命令逐行执行。

这很有效!(至少在我的情况下是这样)我将向您展示这些更改:

public int size() {

    int size = planeta.length;

    for (int k=planeta.length-1; k>=0; k--) {
          // Is there a planet or is it empty?
          if (planeta[k].equals(noPlanet)) {
            // There's no Planet
            size--;

          }
        }
        return size;
}
行星学家的方法是:

public boolean planetExists(String planetName) {

    for (int i=0;i<planeta.length;i++)
        if (planeta[i].name().equals(planetName))
            return true;

    return false;



}
公共布尔平面列表(字符串平面名称){

对于(int i=0;您是否尝试调试它?您的迭代器应该是
k>=0
,而不是
k>0
——目前您没有查看planeta[0]我如何调试它?我是新的编程!你是一个IDE,像Eclipse还是纯JDK?@ JoaasalVADO,如果你使用Eclipse IDE,我不能使用<代码> ARARYLIST ,我问我的老师,他说他会认为它是错的,因为重点是用数组……但是我已经尝试过了,它更好了!rray被预先填充了
“NP”
行星,因此那里不会有
NULL
值。很抱歉没有注意到。这似乎是错误的
planeta[k].name().equals(noPlanet)
我想应该是
planeta[k].equals(noPlanet)
。我现在注意到了这一点,并且我已经更改了它,但是它在类中的任何地方都保持相同的
noPlanet
相同的实例?您还可以重写
equals
方法来比较数据(名称)而不是标识(内存地址)。如果我更改为null,我将在尝试创建行星时获得
NullPointerExection…
。我只是看不出我做错了什么!当您执行“object.member”并且对象为null时,会发生NullPointerException。每个报告的异常都将有堆栈跟踪,第一行说“at package.class.method(class.java:line)”您可以使用这些信息来定位问题。如果没有完整的源代码(“class.java”)和堆栈跟踪,没有人能提供帮助。
public class Galaxy {
  // Empty array of size = 10, i.e. { null, null, .. , null }
  private Planet[] planeta = new Planet[10];

  public Galaxy(String name) {
    this.name = name;
  }

  public int size() {
    int size = 0;

    for (int k = 0; k < planeta.length; k++) {
      // Is there a planet or is it empty?
      if (planeta[k] != null) {
        // There's a planet.
        size++;
      }
    }
    return size;
  }

  public boolean planetExists(String planetName) {
    // Go through the array looking for that planet...
    for (int k = 0; k < this.size(); k++) {
  // NOTICE that we're going only through the non-empty array elements,
      // but we'll check for null either way.
      if (planeta[k] != null && planeta[k].name().equals(planetName)) {
        // Found it.
        return true;
      }
    }

    // Didn't find the planet.
    return false;
  }

  public void addPlanet(String planetName, BigInt x, BigInt y, BigInt z) {
    if (!planetExists(planetName) && !complete()) {
      SpacePoint newSP = new SpacePoint(x, y, z);
      Planet newPlanet = new Planet(planetName, newSP);

      int position = this.size();
      planeta[position] = newPlanet;
    }
  }
}
public int size() {

    int size = planeta.length;

    for (int k=planeta.length-1; k>=0; k--) {
          // Is there a planet or is it empty?
          if (planeta[k].equals(noPlanet)) {
            // There's no Planet
            size--;

          }
        }
        return size;
}
public boolean planetExists(String planetName) {

    for (int i=0;i<planeta.length;i++)
        if (planeta[i].name().equals(planetName))
            return true;

    return false;



}