借助java中的setter在数组中输入(已编辑)
我想在setter的帮助下在数组中输入一些名称。。。这是我的密码。。。 你能帮我怎么做吗??谢谢 //这是带有输入语句的myclass类 //我的问题是线程main java.lang.NullPointerException中的程序say异常 //位于studentproject.MyClass.AddListMyClass.java:27 //在studentproject.Main.mainMain.java:20 //Java结果:1 //我的程序哪里有问题借助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
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();
}
其他变量名都是小写的,除非它们是最终的,否则它们都是大写的