一串不知道怎么错的代码

xuedianzhifeng 2010-12-03 05:48:33
写了一串代码比较菜 呵呵,结果出问题了,调试时红色部分跑出异常,请高手解答一下代码如下
import java.util.Scanner;

public class JiShu {
public static void main(String args[]) throws Exception {
System.out.println("请输入一行字母");
Scanner shuru = new Scanner(System.in);//输入数据
String huodeshuju = shuru.next();//
char[] shuju = null;
char jieguo = 0;
int jishu = 0;

for(int i = 0;i <= huodeshuju.length();i++) {//将输入的数据赋值给数组

shuju[i] = huodeshuju.charAt(i);
}

char buhuo = 0; //临时赋值
int zhuanhuan = 1; // 临时计数

for(int i = 1; i <= huodeshuju.length();i++) { //判断连续字符计数


if(shuju[i] == shuju[i-1]) {

buhuo = shuju[i-1];
zhuanhuan ++ ;

}else {

if(zhuanhuan > jishu ) {

jieguo = buhuo;
jishu = zhuanhuan;
}
}
}

System.out.println("连续最多的字母是:" + jieguo + "共有:" + jishu + "个");

}

}
...全文
168 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunshouhu 2010-12-04
  • 打赏
  • 举报
回复
感觉楼主比我菜 嘿嘿
一夜相思愁 2010-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ycy0111 的回复:]
for(int i = 0;i <= huodeshuju.length();i++) {//将输入的数据赋值给数组

把等号去掉应该就可以了
[/Quote]

+1

不过,我还是有点疑问,楼主的那个数组可以这么定义赋值么?
wuly505 2010-12-03
  • 打赏
  • 举报
回复
初始化为null,赋值肯定出错
zengjian2008c 2010-12-03
  • 打赏
  • 举报
回复
麻烦把提示的异常给出来
wuxiuxiang 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qybao 的回复:]
char[] shuju = null; //问题在这里,shuju数组没有new
shuju = new char[huodeshuju.length()];
[/Quote]
顶!
sunyiz 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qybao 的回复:]
char[] shuju = null; //问题在这里,shuju数组没有new
shuju = new char[huodeshuju.length()];
[/Quote]

这个才是关键,当然数组越界也是马上就要出现的问题
fable0115 2010-12-03
  • 打赏
  • 举报
回复
典型的数组下标越界异常
快乐的2 2010-12-03
  • 打赏
  • 举报
回复
循环错误了,for(int i = 0; i < huodeshuju.length();i++)应该这么写,<=就过界了。
fantasy0126 2010-12-03
  • 打赏
  • 举报
回复
楼主果然菜鸟,虚心学习吧,楼上说得都很好
qybao 2010-12-03
  • 打赏
  • 举报
回复
char[] shuju = null; //问题在这里,shuju数组没有new
shuju = new char[huodeshuju.length()];
xtawgipl 2010-12-03
  • 打赏
  • 举报
回复
for(int i = 0;i <= huodeshuju.length();i++) {//将输入的数据赋值给数组

shuju[i] = huodeshuju.charAt(i);
}


不能写成<=
要写成<
...
ETCentury 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 eggno8 的回复:]

嗯,应该是因为下标越界了,下标是从 0 --------- length-1
for(int i = 0;i <= huodeshuju.length();i++)
[/Quote]

+1
eggno8 2010-12-03
  • 打赏
  • 举报
回复
嗯,应该是因为下标越界了,下标是从 0 --------- length-1
for(int i = 0;i <= huodeshuju.length();i++)
caofaping 2010-12-03
  • 打赏
  • 举报
回复

for(int i = 0;i <= huodeshuju.length();i++)

改成

for(int i = 0;i < huodeshuju.length();i++)

看下API就知道为什么
ycy0111 2010-12-03
  • 打赏
  • 举报
回复
for(int i = 0;i <= huodeshuju.length();i++) {//将输入的数据赋值给数组

把等号去掉应该就可以了
xuedianzhifeng 2010-12-03
  • 打赏
  • 举报
回复
自己先顶一下 呵呵

62,612

社区成员

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

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