您好:
根据您编写的代码及报错异常信息,是因为aaa.charAt(i); 方法中i的值超过了字符串的长度导致的,在for循环中,条件应该是i 具体代码如下: 供参考,希望对你有帮助!
import java.io.*;
public class question7 {
public static void main(String[] args) {
String aaa=null;
char ch;
int i;
int j=0,k=0,l=0,m=0;
try{
DataInputStream din=new DataInputStream(System.in);
////mychange
//aaa=din.readLine();
BufferedReader br = new BufferedReader(new InputStreamReader(din));
aaa=br.readLine();
////mychange end
System.out.println(aaa);
System.out.println(aaa.length());
////mychange
//for(i=0;i<=aaa.length();i++){
for(i=0;i
System.out.println("i="+i);
ch=aaa.charAt(i);
if((ch>=65&&ch<=90)||(ch>=97&&ch<=122))
j++;
else if(ch==32)
k++;
else if(ch>=48&&ch<=57)
l++;
else m++;
}
System.out.println("英文字母个数为:"+j);
System.out.println("空格个数为:"+k);
System.out.println("数字个数为:"+l);
System.out.println("其他字符个数为:"+m);
}catch(IOException e){e.printStackTrace();}
}
}
我用的是1.6的编译器,所以中间改了一段代码。
还有就是那for处
出现异常的原因就是你的字符串数组下标溢出了。
for(i=0;i<=aaa.length();i++){
这一句吧,改成i
for (i = 0; i < aaa.length(); i++) { //不要加"=",你的数组没有那么长,会造成
角标越界