永发信息网

一道java题目。帮忙改错啊~

答案:5  悬赏:40  手机版
解决时间 2021-06-01 17:30
  • 提问者网友:溺爱和你
  • 2021-05-31 22:04
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++){
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
领会代码很费时间,你说明是编译错误还是运行效果不符合你的预想,说的越详细,越容易接近答案。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯