一道java题目。帮忙改错啊~
- 提问者网友:溺爱和你
- 2021-05-31 22:04
public int m;
public boolean n;
public String mark;
public static void main(String[] args){
int MAX_INDEX=10;
ImprovedPartialSum b[]=new ImprovedPartialSum[10];
int s=0;
for(int i=1;i<MAX_INDEX;i++){
s=s+i*i;
b[i-1].m=s;
if(s%2==0)
{
b[i-1].mark="*";
b[i-1].n=true;
}
else
{
b[i-1].mark=" ";
b[i-1].n=false;
}
}
for(int i=1;i<MAX_INDEX;i++)
System.out.println(b[i-1].m);
}
}
- 五星知识达人网友:野味小生
- 2021-05-31 22:28
ImprovedPartialSum类的对象还没有实例化~
package Test复赛;
class ImprovedPartialSum{
public int m ;
public boolean n;
public String mark;
public static void main(String[] args){
int MAX_INDEX=10;
ImprovedPartialSum b[]=new ImprovedPartialSum[10];
for(int i = 0 ; i < b.length;i++) //加上
b[i] = new ImprovedPartialSum();//这两句
int s=0;
for(int i=1;i<MAX_INDEX;i++){
s=s+i*i;
b[i-1].m=s;
if(s%2==0)
{
b[i-1].mark="*";
b[i-1].n=true;
}
else
{
b[i-1].mark=" ";
b[i-1].n=false;
}
}
for(int i=1;i<MAX_INDEX;i++)
System.out.println(b[i-1].m);
}
}
- 1楼网友:猎心人
- 2021-06-01 02:04
初始化对象数组时也要初始化对象
public class ImprovedPartialSum { public int m; public boolean n; public String mark;
public static void main(String[] args) { int MAX_INDEX = 10; ImprovedPartialSum b[] = new ImprovedPartialSum[10]; int s = 0; for (int i = 1; i <MAX_INDEX; i++) { b[i-1]=new ImprovedPartialSum(); s = s + i * i; b[i - 1].m = s; if (s % 2 == 0) { b[i - 1].mark = "*"; b[i - 1].n = true; } else { b[i - 1].mark = " "; b[i - 1].n = false; } } for (int i = 1; i < MAX_INDEX; i++) System.out.println(b[i - 1].m); } }
- 2楼网友:大漠
- 2021-06-01 01:06
这个程序的问题在于数组虽然初始了长度,但每个元素仍然是null。解决方法在于
1. 提供一个Constructor:
public ImprovedPartialSum() {
}
2. 在应用每个元素前(比如在 s=s+i*i; 语句之后)进行初始化:
b[i-1]=new ImprovedPartialSum();
这样您的程序就可以运行了。因为不很清楚您程序的其他目的,所以对您的算法不做评论。
另外有一个小的建议。既然您已经定义而且运用了一个 MAX_INDEX,那么在定义数组长度的时候最好也用它,这样可以防止出现Index Out of Boundry 的情况。
- 3楼网友:风格不统一
- 2021-06-01 00:11
你把一个类声明成一个数组来搞!
这也是我第一次看到过
你这个代码编译没什么问题了
package test; public class ImprovedPartialSum1 {
public int m; public boolean n; public String mark; public static void main(String[] args){ int MAX_INDEX=10; ImprovedPartialSum b[]=new ImprovedPartialSum[10]; int s=0; for(int i=1;i<MAX_INDEX;i++){ s=s+i*i; b[i-1].m=s; b[i-1].n = false; if(s%2==0) { b[i-1].mark="*"; b[i-1].n=true; } else { b[i-1].mark=" "; b[i-1].n=false; } } for(int i=1;i<MAX_INDEX;i++){ System.out.println(b[i-1].m); } }
}
运行的时候抛出空异常
Exception in thread "main" java.lang.NullPointerException at test.ImprovedPartialSum1.main(ImprovedPartialSum.java:32)
32行就是
b[i-1].m=s; 这句出错了
应该就是b[i-1] 这个对象不存在!
后面我尝试了很多 都是 b[i-1] 这个数组出错
最后我判断应该是不能这样声明一个 数组类!
具体怎样还是等高手来解答把
- 4楼网友:舊物识亽
- 2021-05-31 23:35