【问题标题】:Basic java - passing values to an object array基本 java - 将值传递给对象数组
【发布时间】:2012-02-03 16:13:06
【问题描述】:

public static void main(String[] args) {
    staples[] stemp = new staples[8];
    int j;

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

        for (j = 0; j < 8; j++) {
            System.out.print("Enter your name : ");
            stemp[j].setName(reader.readLine());

            System.out.println("Enter your age : ");
            stemp[j].setAge(Integer.parseInt(reader.readLine()));
        }

        for (j = 0; j < 8; j++) {
            System.out.print("Employee number:" + "j:" + "name:" + stemp[j].getName() + " Age:" + stemp[j].getAge());
        }

        reader.close(); // VERY IMPORTANT TO CLOSE

        System.out.println("Program ended");
    } catch (java.io.IOException ex) {
        System.out.println("Error is " + ex.getMessage());
    }
}

我正在尝试将值传递给具有两个属性名称和年龄的数组对象 stemp。将值输入数组的正确语法是什么?上面的语法正确吗?

【问题讨论】:

  • 代码可以编译吗?如果它编译,它在语法上是正确的。
  • 在employee.Employee.main(Employee.java:29) 的线程“main”java.lang.NullPointerException 异常Java 结果:1
  • “订书钉”是什么类型的?
  • 因此,您没有语法问题,而是逻辑问题:您尝试在空对象上调用方法。您永远不会初始化数组的任何元素。这就是例外所说的。阅读它。
  • staples 是一个类。属性字符串名称和整数年龄

标签: java bufferedreader object-oriented-analysis


【解决方案1】:

你需要添加stemp[j] = new staples();,否则你会得到NPE。

当您在 Java 中创建数组时,JVM 会为您的对象分配空间以供 Nreferences 使用,但不会为对象本身分配空间。您需要使用new 运算符一一分配这些。

for ( j=0;j<8;j++)
{
     stemp[j] = new staples();
     System.out.print("Enter your name : ");
     stemp[j].setName(reader.readLine());
     System.out.println("Enter your age : "); 
     stemp[j].setAge(Integer.parseInt(reader.readLine()));
}

【讨论】:

    【解决方案2】:
    public static void main(String[] args) {
        staples[] stemp = new staples[8];
        int j;
    
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    
            for (j = 0; j < 8; j++) {
                System.out.print("Enter your name : ");
                stemp[j] = new staples();
                stemp[j].setName(reader.readLine());
    
                System.out.println("Enter your age : ");
                stemp[j].setAge(Integer.parseInt(reader.readLine()));
            }
    
            for (j = 0; j < 8; j++) {
                System.out.print("Employee number:" + "j:" + "name:" + stemp[j].getName() + " Age:" + stemp[j].getAge());
            }
    
            reader.close(); // VERY IMPORTANT TO CLOSE
    
            System.out.println("Program ended");
        } catch (java.io.IOException ex) {
            System.out.println("Error is " + ex.getMessage());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 1970-01-01
      • 2020-07-12
      • 2019-12-19
      • 2017-07-21
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多