下面的程序应该找到字符串中的平均字母。例如:“abc”的平均值是“b”。当我运行该程序时,我收到下面的错误消息。谢谢你的帮助!
方案:Java“字符串索引越界”
import java.util.*;
public class AvLetter{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("enter a phrase");
String s = scan.nextLine();
s = s.toLowerCase();
int letterCount = 0; int sum = 0; char c;
for(int pos= 0; pos< s.length(); pos++){
c=s.charAt(pos);
if (Character.isLetter(c)) {
sum = sum + (int)s.charAt(c);
letterCount++;
System.out.println((char)(sum/letterCount));
}
}
}
}
错误消息:
java.lang.StringIndexOutOfBoundsException: String index out of range: 97
at java.lang.String.charAt(String.java:686)
at AvLetter.main(AvLetter.java:14)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:271)
您是否尝试了解错误,以及它为什么会出现?到目前为止您的结论是什么? – bzlm 2011-02-13 19:46:25
@Rebecca出于好奇,你是Umass Amherst的CS 121学生吗? – GobiasKoffi 2011-02-13 19:51:48