Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.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中的setter在数组中输入(已编辑)_Java_Input_Setter - Fatal编程技术网

借助java中的setter在数组中输入(已编辑)

借助java中的setter在数组中输入(已编辑),java,input,setter,Java,Input,Setter,我想在setter的帮助下在数组中输入一些名称。。。这是我的密码。。。 你能帮我怎么做吗??谢谢 //这是带有输入语句的myclass类 //我的问题是线程main java.lang.NullPointerException中的程序say异常 //位于studentproject.MyClass.AddListMyClass.java:27 //在studentproject.Main.mainMain.java:20 //Java结果:1 //我的程序哪里有问题 public class M

我想在setter的帮助下在数组中输入一些名称。。。这是我的密码。。。 你能帮我怎么做吗??谢谢

//这是带有输入语句的myclass类 //我的问题是线程main java.lang.NullPointerException中的程序say异常 //位于studentproject.MyClass.AddListMyClass.java:27 //在studentproject.Main.mainMain.java:20 //Java结果:1 //我的程序哪里有问题

public class MyClass
{
     Student St = new Student();

     Student[]Array1 = new Student[10];
     Student[]ArrayF1 = new Student[10];

     void AddList()
     {

            Scanner Scan = new Scanner(System.in);

            for (int i=0; i<Array1.length & i<ArrayF1.length; i++)
            {
                System.out.println("Enter Student NAME Number " + (i+1) + ":");
                Array1[i].setName(Scan.next());


                //System.out.println("Enter Student MARK Number " + (i+1) + ":");
                //St.setMark(Scan.nextFloat());
            }

    }

}
另一个问题是,当我要打印数组时,打印的是数组的内存地址,而不是数组的值。。。我的问题在哪里…打印的是这样的…输入学生姓名编号10: dddddd 学生项目。Student@1b67f74

    void PrintList()
    {

            for (int i=0; i<Array1.length; i++)
            {

                System.out.println(Array1[i]);

            }
    }
用10个空条目填充数组1

将调用setName。。。在null上,这将导致NullPointerException

解决这一问题的一种方法是:

1) Create new Student object inside for loop
2) call setName... on object created in step1
3) Set object to array index.
用10个空条目填充数组1

将调用setName。。。在null上,这将导致NullPointerException

解决这一问题的一种方法是:

1) Create new Student object inside for loop
2) call setName... on object created in step1
3) Set object to array index.

在Java中,数组是对象,因此在编写时:

字符串[]asdf=新字符串[大小]

您不会创建存储在一个数组中的十个字符串对象,而只创建数组的对象,其所有元素引用都设置为null

您应该做的是在设置学生对象的属性之前创建学生对象:

 Array1[i] = new Student();    
 Array1[i].setName(Scan.next());

在Java中,数组是对象,因此在编写时:

字符串[]asdf=新字符串[大小]

您不会创建存储在一个数组中的十个字符串对象,而只创建数组的对象,其所有元素引用都设置为null

您应该做的是在设置学生对象的属性之前创建学生对象:

 Array1[i] = new Student();    
 Array1[i].setName(Scan.next());

不要忘记初始化数组的元素:

for (int i = 0; i < Array1.length; i++) {
    Array1[i] = new Student();
}
此行:学生[]数组1=新学生[10];创建一个空数组,其中包含空元素。在使用它们之前,您必须依次实例化每一个,否则当您尝试调用方法(例如数组中的元素上的setName)时,您将得到一个令人讨厌的NullPointerException


同样的考虑也适用于阵列1。风格问题-在Java中,变量和方法名称以小写字符开头,只有类、接口和枚举名称以大写字符开头。

不要忘记初始化数组元素:

for (int i = 0; i < Array1.length; i++) {
    Array1[i] = new Student();
}
  Student[]Array1 = new Student[10];
此行:学生[]数组1=新学生[10];创建一个空数组,其中包含空元素。在使用它们之前,您必须依次实例化每一个,否则当您尝试调用方法(例如数组中的元素上的setName)时,您将得到一个令人讨厌的NullPointerException

同样的考虑也适用于阵列1。风格问题——在Java中,变量和方法名称以小写字符开头,只有类、接口和枚举名称以大写字符开头

  Student[]Array1 = new Student[10];
实际上并没有给你10个正确构造的学生对象。它所做的是分配足够的空间来容纳10个正确构造的学生对象。因此,在调用null.setName的数组上的每次迭代中都会发生这种情况。这导致了NPE

如果要在分配后构建学生对象,可以执行以下操作:

for(int i = 0;i<Array1.length;i++)
{  
    Array1[i] = new Student();
}  
其他变量名都是小写的,除非它们是最终的,否则它们都是大写的

实际上并没有给你10个正确构造的学生对象。它所做的是分配足够的空间来容纳10个正确构造的学生对象。因此,在调用null.setName的数组上的每次迭代中都会发生这种情况。这导致了NPE

如果要在分配后构建学生对象,可以执行以下操作:

for(int i = 0;i<Array1.length;i++)
{  
    Array1[i] = new Student();
}  
其他变量名都是小写的,除非它们是最终的,否则它们都是大写的