将循环变量与对象变量一起使用

时间:2018-10-26 22:05:41

标签: java arrays loops object

这就是我得到的

构造函数:

public class Assignment08_ {
  String name;
  String abrv;
  int atomicNumber;
  double atomicMass;
  int group;
  int period;

   public Assignment08_(String name, String abrv, int atomicNumber, double 
   atomicMass, int group, int period) {
     this.name = name;
     this.abrv = abrv;
     this.atomicNumber = atomicNumber;
     this.atomicMass = atomicMass;
     this.group = group;
     this.period = period;
   }
}

和班级:

import java.io.File;
import java.util.Scanner;

public class Assignment08 {

  public static void main(String[] args) throws Exception {

    Assignment08_[] elementArr = new Assignment08_[119];
    reader(elementArr);
    for(int i = 0; i < args.length; i++) {
        action(elementArr, args[i]);
    }
  }

  public static void reader(Assignment08_[] elements) throws Exception {
    Scanner data = new Scanner(new File("/srv/datasets/elements"));
    while (data.hasNext()) {
      int atomicNumber = data.nextInt();
      String abrv = data.next();
      String name = data.next();
      double atomicMass = data.nextDouble();
      int period = data.nextInt();
      int group = data.nextInt();
      elements[atomicNumber] = new Assignment08_(name, abrv, atomicNumber, 
atomicMass, group, period);
    }
    data.close();
  }

  public static void action(Assignment08_[] element, String str) {
    // for testing
    System.out.printf("%s%n", element[4].abrv);
    for (int i = 0; i < 119; i++) {
      if (str.compareTo(element[i].abrv) == 0)
        System.out.println(element[i].name);
    }
  }
}

我输入“ java Assignment08_ H”(等于element [0] .abrv)

我得到输出:

线程“ main”中的异常java.lang.NullPointerException

    at Assignment08.action(Assignment08.java:33)\

    at Assignment08.main(Assignment08.java:11)

Be = element [4] .abrv

及其奇怪的原因是,如果我要删除for语句,只保留嵌套的if语句,然后将i更改为Number(如0),它将打印名称并正确运行(如果我输入的H等于element [0] .abrv),所以我不知道这是怎么回事,任何帮助都很好,谢谢

0 个答案:

没有答案