此JAVA程序错在哪?

haoahoxueJAVA 2004-11-18 01:13:20
此程序实现一个一维数组所有个元素的乘积
public class M
{
int []a={1,2,3,4,5,};
int b=0,c=0;
public static void main(String [] args)
{
for(int i=0;i<a.length;i++)
{
b=a[i];
c=a[i]*a[i+1];
b=c;
}
System.out.println(c);
}
}

运行时报错,请高手指点,错在哪?
...全文
236 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
machete52 2004-11-19
  • 打赏
  • 举报
回复
用递归更容易,看上去有点罗嗦
zhaoce 2004-11-19
  • 打赏
  • 举报
回复
简单,你的非静态的变量不能被非静态的方法所访问
你没看到你的main函数前面有一个static么?
要访问的话,在main函数里面定义M类的对象
这样
public M() {
}
int []a={1,2,3,4,5,};
int b=0,c=0;
public static void main(String [] args)
{
M m=new M();//给我加上这一行
for(int i=0;i<m.a.length;i++)//注意此时的变量abc前面都要加上一个m.
{
m.b=m.a[i];
m.c=m.a[i]*m.a[i+1];
m.b=m.c;
}
System.out.println(m.c);
}

剩下的就是算法问题了
dengbg 2004-11-19
  • 打赏
  • 举报
回复
同意fast_time(fast_time)
polaris2004 2004-11-19
  • 打赏
  • 举报
回复
真郁闷
这程序有用吗?
fengliu212 2004-11-19
  • 打赏
  • 举报
回复
快来抢分
ninghao37 2004-11-19
  • 打赏
  • 举报
回复
a[i+1];
i最大时数组越界
  • 打赏
  • 举报
回复
两种方法:
1、
public class MM
{
static int []a={1,2,3,4,5};
static int c=1;
public static void main(String [] args)
{
for(int i=0;i<a.length ;i++)
{
c=c*a[i];
}
System.out.println(c);
}
}

2、
public class MM
{
public static void main(String [] args)
{
int []a={1,2,3,4,5};
int c=1;
for(int i=0;i<a.length ;i++)
{
c=c*a[i];
}
System.out.println(c);
}
}
kobetong 2004-11-19
  • 打赏
  • 举报
回复
该结了吧!
will1982 2004-11-19
  • 打赏
  • 举报
回复
public class M
{
public static void main(String [] args)
{ int []a={1,2,3,4,5};
int c=1;

for(int i=0;i<a.length ;i++)
{
c=c*a[i];
}
System.out.println(c);
}
}
niko7 2004-11-18
  • 打赏
  • 举报
回复
public class M
{
int []a={1,2,3,4,5};
int c=1;
public static void main(String [] args)
{
for(int i=0;i<a.length ;i++)
{
c=c*a[i];
}
System.out.println(c);
}
}
这也是不行的哦,还是那句话:public static void main 方法中哪里来的 a,b,c 啊?
:)
niko7 2004-11-18
  • 打赏
  • 举报
回复
补充:
在 class 中 直接 给成员变量 赋予初始值是可以的:
int []a={1,2,3,4,5,};
int b=0,c=0;

其中 a.length = 5
niko7 2004-11-18
  • 打赏
  • 举报
回复
这个能编译通过?我看编译都通不过,public static void main 方法中哪里来的 a,b,c 啊?
beautywolf110 2004-11-18
  • 打赏
  • 举报
回复
在类中,不能直接给数据成员赋值,只能在方法(函数)中赋值。
使用static后也可以给数据成员赋值,本人试过,可以通过编译。
算法当然也有问题喔。
ymll1 2004-11-18
  • 打赏
  • 举报
回复
你的程序就算语法正确能实现你的目的吗
ww0221542 2004-11-18
  • 打赏
  • 举报
回复
for(int i=0;i<a.length;i++)
c*=a[i];

System.out.println(c);
就足够了。其他不用的。
zdjray 2004-11-18
  • 打赏
  • 举报
回复
public class M
{
int []a={1,2,3,4,5};
int c=1;
public static void main(String [] args)
{
for(int i=0;i<a.length ;i++)
{
c=c*a[i];
}
System.out.println(c);
}
}


这样就好了,呵呵
fog628 2004-11-18
  • 打赏
  • 举报
回复
1: int []a={1,2,3,4,5,};
int b=0,c=0; 要为static才可以
2:c=a[i]*a[i+1]; 越界

romeo00001 2004-11-18
  • 打赏
  • 举报
回复
for(int i=0;i<a.length;i++)
{
b=a[i];
c=a[i]*a[i+1];//这句越界了
b=c;
}
问题在这里,到i=a.length-1时会访问a[a.length],而a[a.length]是不存在的。
另外int []a={1,2,3,4,5,};这个数组没问题
Mohooo 2004-11-18
  • 打赏
  • 举报
回复
楼上都说了哈

不过我觉得下面的
for(int i=0;i<a.length;i++)
{
b=a[i];
c=a[i]*a[i+1];

b=c;
}

逻辑很诡异哈,不是这个样子的吧~~~~~
fengfengjunjun 2004-11-18
  • 打赏
  • 举报
回复
同意
加载更多回复(8)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧