Java StringIndexOutOfBoundsException不清楚
我的目标是返回一个由每个字母组成的字符串,只要字母在字母表中的位置比前一个字母晚,假设单词是小写的。问题是,我甚至不能测试出来,因为我得到了一个错误(在标题中),我不确定它是如何发生的。我能得到一些帮助吗 这是我的密码:Java StringIndexOutOfBoundsException不清楚,java,string,for-loop,stringindexoutofbounds,Java,String,For Loop,Stringindexoutofbounds,我的目标是返回一个由每个字母组成的字符串,只要字母在字母表中的位置比前一个字母晚,假设单词是小写的。问题是,我甚至不能测试出来,因为我得到了一个错误(在标题中),我不确定它是如何发生的。我能得到一些帮助吗 这是我的密码: class Main { static String alphabetical(String str) { String alpha="abcdefghijklmnopqrstuvwxyz"; String betical="";
class Main {
static String alphabetical(String str)
{
String alpha="abcdefghijklmnopqrstuvwxyz";
String betical="";
for(int k=0;k<str.length();k++){
for (int i=0;k<alpha.length();i++){
if(str.charAt(k)>=alpha.charAt(i)){
betical+=str.charAt(k);
}
}
}
return betical;
}
//test case below (dont change):
public static void main(String[] args){
System.out.println(alphabetical("adatplqzh")); //result should be "adtz"
}
}
主类{
静态字符串字母顺序(字符串str)
{
字符串alpha=“abcdefghijklmnopqrstuvxyz”;
字符串betical=“”;
对于(int k=0;k根据注释,您应该将(int i=0;k更改为(int i=0;i
然后他们会改变你的状况
if(str.charAt(k)==alpha.charAt(i)){
betical+=str.charAt(k);
}
它将提供所需的输出您的内部循环看起来是错误的
for (int i=0;k<alpha.length();i++){
for(int i=0;kI会假设for(int i=0;k
应该是for(int i=0;i
感谢您发现错误类型“k”。然而,另一个问题是当我将str.charAt(k)>=alpha.charAt(i)更改为str.charAt(k)==alpha.charAt(i)时,它只返回输入“adatplqzh”“@Christopher在两个循环的外侧做一个int pos=0;
并将内部循环更改为for(int i=pos;i