Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringIndexOutOfBoundsException不清楚_Java_String_For Loop_Stringindexoutofbounds - Fatal编程技术网

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