急急急。。。java代码报错。。。大神请详解,赐教啦~

绝望依然 2013-10-23 07:29:49


package com.zao;

import java.util.ArrayList;

public class Core1 {
private String xingming;
private String lll;
private String mmm;

public Core1(String a, String b, String c) {
xingming = a;
lll = b;
mmm = c;
}
public String getXingming(){
return xingming;
}public String getLLL(){
return lll;
}public String getmmm(){
return mmm;
}public Core1(){}
public static void main(String[] args) {
ArrayList c = new ArrayList();
System.out.println("" + c.size());
Core1 b = new Core1("孙悟空", "2", "4");
Core1 b2 = new Core1("沙僧","2","sd");
Core1 b3 = new Core1("八戒","2s","360");
c.add(b);
c.add(b2);
c.add(b3);
System.out.println("大小为:" + c.size());
for (int i = 0; i <= c.size(); i++) {
Core1 f = (Core1) c.get(i);
System.out.println("第" + (i + 1) + "个学生的姓名字是" + f.getXingming());
}

}

}
结果显示:0
大小为:2
第1个学生的姓名字是孙悟空
第2个学生的姓名字是沙僧
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
at com.zao.Core1.main(Core1.java:33)
可以从运行结果看出,输出了2个人的信息,可是那个“0”是怎么来的??后面的异常又出现在哪里??是越界吗?没有啊 。。。。
...全文
199 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
快乐的小呆 2013-10-23
  • 打赏
  • 举报
回复
你数组下标越界是因为for循环里的i <= c.size(); 把=号去掉就可以了。可我实在不明白为何你for循环前的那句输出为什么,大小为:2。 我以为我看错了,运行了下,是3。不知道撸主怎么来的2。
ekekyn 2013-10-23
  • 打赏
  • 举报
回复
i<= c.size();下标越界了
每天三道题 2013-10-23
  • 打赏
  • 举报
回复
c.size()的值为3,如果从0开始,那么只能取到0,1,2,而3越界了
teemai 2013-10-23
  • 打赏
  • 举报
回复

import java.util.ArrayList;

public class Core1 {
	private String xingming;
	private String lll;
	private String mmm;

	public Core1(String a, String b, String c) {
		xingming = a;
		lll = b;
		mmm = c;
	}

	public String getXingming() {
		return xingming;
	}

	public String getLLL() {
		return lll;
	}

	public String getmmm() {
		return mmm;
	}

	public Core1() {
	}

	public static void main(String[] args) {
		ArrayList c = new ArrayList();
		System.out.println("" + c.size());
		Core1 b = new Core1("孙悟空", "2", "4");
		Core1 b2 = new Core1("沙僧", "2", "sd");
		Core1 b3 = new Core1("八戒", "2s", "360");
		c.add(b);
		c.add(b2);
		c.add(b3);
		System.out.println("大小为:" + c.size());
		for (int i = 0; i < c.size(); i++) {
			Core1 f = (Core1) c.get(i);
			System.out.println("第" + (i + 1) + "个学生的姓名字是" + f.getXingming());
		}

	}

}
u010016988 2013-10-23
  • 打赏
  • 举报
回复
索引错了 索引是从0开始 基础哦
wind_elf 2013-10-23
  • 打赏
  • 举报
回复
System.out.println("" + c.size()); 你还没有想容器里面存放数据,打印出来肯定是0。 for (int i = 0; i <= c.size(); i++) ,越界了,改成i<c.size()。另外你这个输出应该是三行。
小灯光环 2013-10-23
  • 打赏
  • 举报
回复
我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 4 楼 huxiweng 的回复:

import java.util.ArrayList;

public class Core1 {
	private String xingming;
	private String lll;
	private String mmm;

	public Core1(String a, String b, String c) {
		xingming = a;
		lll = b;
		mmm = c;
	}

	public String getXingming() {
		return xingming;
	}

	public String getLLL() {
		return lll;
	}

	public String getmmm() {
		return mmm;
	}

	public Core1() {
	}

	public static void main(String[] args) {
		ArrayList c = new ArrayList();
		System.out.println("" + c.size());
		Core1 b = new Core1("孙悟空", "2", "4");
		Core1 b2 = new Core1("沙僧", "2", "sd");
		Core1 b3 = new Core1("八戒", "2s", "360");
		c.add(b);
		c.add(b2);
		c.add(b3);
		System.out.println("大小为:" + c.size());
		for (int i = 0; i < c.size(); i++) {
			Core1 f = (Core1) c.get(i);
			System.out.println("第" + (i + 1) + "个学生的姓名字是" + f.getXingming());
		}

	}

}
我看到你的csdn博客里添加了新浪微博的链接。我看了你的微博了,你可以告诉我怎么把微博插入到博客页面左侧吗???是否需要代码呢?、Thank you
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 12 楼 huxiweng 的回复:
[quote=引用 9 楼 u010328384 的回复:] [quote=引用 1 楼 wlwlwlwl015 的回复:] 我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
谢谢。不过那个0怎么还在呢?why?"".还有我还不知道该怎么给分[/quote]上面有个结贴看到了吗[/quote]我看到了。。。谢谢。下次给分你啊。我仔细看了下,你把我代码复制了然后修改了下。。。。
teemai 2013-10-23
  • 打赏
  • 举报
回复
引用 13 楼 u010328384 的回复:
[quote=引用 12 楼 huxiweng 的回复:] [quote=引用 9 楼 u010328384 的回复:] [quote=引用 1 楼 wlwlwlwl015 的回复:] 我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
谢谢。不过那个0怎么还在呢?why?"".还有我还不知道该怎么给分[/quote]上面有个结贴看到了吗[/quote]看到了呀。我怎么针对个人给分呢?[/quote] 右边有个格子是输入分数的。 4、如何给帖子结帖,结帖如何给分? 点击帖子左上方的"结帖"按钮,可以进行如下操作: 单独给分结帖:当您的问题得到解答,请给回答者相应的分数,来结束该帖。当您结帖后,系统将返回给您该帖的50%的可用分。 注:结帖人不允许给自己的回复发分。 无满意答案结帖: 当您的问题得不到合适的答案。您可以选择无满意结帖结束这个问题。 注:无满意结帖,系统将回收帖主的悬赏分,且没有任何可用分返还。无满意答复,必须提问满24小时才可以进行操作。 平均给分结帖:当回复过长参与人数过多时候,您可以使用平均给分的功能。 注:技术区不允许平均给分结帖。
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 12 楼 huxiweng 的回复:
[quote=引用 9 楼 u010328384 的回复:] [quote=引用 1 楼 wlwlwlwl015 的回复:] 我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
谢谢。不过那个0怎么还在呢?why?"".还有我还不知道该怎么给分[/quote]上面有个结贴看到了吗[/quote]看到了呀。我怎么针对个人给分呢?
teemai 2013-10-23
  • 打赏
  • 举报
回复
引用 9 楼 u010328384 的回复:
[quote=引用 1 楼 wlwlwlwl015 的回复:] 我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
谢谢。不过那个0怎么还在呢?why?"".还有我还不知道该怎么给分[/quote]上面有个结贴看到了吗
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 8 楼 missxingyue 的回复:
根据程序看来把for循环里的i <= c.size(); 把=号去掉就可以了。 但是我也不明白楼主的大小为2 而且报的错误也是Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 按道理应该输出大小为:3 报的错误是Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
谢谢你的提醒。是3.我注释了一行
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 7 楼 l568646976 的回复:
你数组下标越界是因为for循环里的i <= c.size(); 把=号去掉就可以了。可我实在不明白为何你for循环前的那句输出为什么,大小为:2。 我以为我看错了,运行了下,是3。不知道撸主怎么来的2。
我运行了几次,注释了的。是3.。。你很仔细
绝望依然 2013-10-23
  • 打赏
  • 举报
回复
引用 1 楼 wlwlwlwl015 的回复:
我给你解释的够清楚了吧,i <= c.size()等号去掉就OK,给分吧嘎嘎、
谢谢。不过那个0怎么还在呢?why?"".还有我还不知道该怎么给分
missxingyue 2013-10-23
  • 打赏
  • 举报
回复
根据程序看来把for循环里的i <= c.size(); 把=号去掉就可以了。

但是我也不明白楼主的大小为2
而且报的错误也是Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 2, Size: 2

按道理应该输出大小为:3
报的错误是Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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