我的程序那里错了?在线等 不要把类Rectangle定义成内部类,把它与类doRect分开定义 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 错误!Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at doRect.main(doRect.java:6)Press any key to continue...就是这个错误 class doRect{ public static void main(String args[]) { int w=Integer.valueOf(args[0]).intValue(); int h=Integer.valueOf(args[1]).intValue(); Rectangle myrect=new Rectangle(w,h); myrect.drawRect(); }}class Rectangle { int width,height,area; public Rectangle(int w,int h) { width=w; height=h; area=getArea(w,h); } protected int getArea(int w,int h) { int a; a=w*h; return a; } public void drawRect() { int i,j; for(i=width;i>0;i--) System.out.println("#"); System.out.print(" "); for(i=height;i>0;i--) { System.out.print("#"); for(j=width;j>0;j--) System.out.print(" "); System.out.print("#"); } for(i=width;i>0;i--) System.out.print("#"); System.out.print(" "); } } 楼主,是这么回事:因为main是个静态函数,不产生对象,所以它不能调用内隐类.楼上的做法就可以了.如果要实现用内隐类的办法,请如此写:public static void main(String args[]){ int w=Integer.valueOf(args[0]).intValue(); int h=Integer.valueOf(args[1]).intValue(); doRect test=new doRect(); test.draw(w,h); } public void draw(int w,int h){ Rectangle myrect=new Rectangle(w,h); myrect.drawRect(); }其他的不变,意思即通过draw产生对象间接调用内隐类.这样就可以了.不过好像产生了两个对象哦,好像不如不用内隐类的好.....btw:我觉得楼主还是应该对main的参数检验一下,不管三七二十一就用args[0],args[1]不太好...... 自己结合网上资料写的一个java图像灰度化程序,编译可以通过,但运行不行,请大家帮忙修改一下!谢谢! 一道笔试题!!! 输入问题? JDK 打印监听不到问题 关于ArrayList的小问题 高手指点 Java与sqlserver2000数据库连接的问题 请教一问题(100分求教) 求高手点拨一个“1+1!=2”的“非歌德巴赫猜想”的Java调试问题.. www.apache.org怎么了? JAVA菜鸟的疑问:开发环境!!!!!!!!!! 在线等待!初级问题? 清高手指点,怎样用java访问word文档?
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at doRect.main(doRect.java:6)
Press any key to continue...
就是这个错误
{
public static void main(String args[])
{
int w=Integer.valueOf(args[0]).intValue();
int h=Integer.valueOf(args[1]).intValue();
Rectangle myrect=new Rectangle(w,h);
myrect.drawRect();
}
}
class Rectangle
{
int width,height,area;
public Rectangle(int w,int h)
{
width=w;
height=h;
area=getArea(w,h);
}
protected int getArea(int w,int h)
{
int a;
a=w*h;
return a;
}
public void drawRect()
{
int i,j;
for(i=width;i>0;i--)
System.out.println("#");
System.out.print(" ");
for(i=height;i>0;i--)
{
System.out.print("#");
for(j=width;j>0;j--)
System.out.print(" ");
System.out.print("#");
}
for(i=width;i>0;i--)
System.out.print("#");
System.out.print(" ");
}
}
int w=Integer.valueOf(args[0]).intValue();
int h=Integer.valueOf(args[1]).intValue();
doRect test=new doRect();
test.draw(w,h);
}
public void draw(int w,int h){
Rectangle myrect=new Rectangle(w,h);
myrect.drawRect();
}
其他的不变,意思即通过draw产生对象间接调用内隐类.这样就可以了.不过好像产生了两个对象哦,好像不如不用内隐类的好.....
btw:我觉得楼主还是应该对main的参数检验一下,不管三七二十一就用args[0],args[1]不太好......