下面的程序應該找到字符串中的平均字母。例如:「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