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
java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:9_Java_String_Indexoutofrangeexception - Fatal编程技术网

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:9

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:9,java,string,indexoutofrangeexception,Java,String,Indexoutofrangeexception,我得到了相同的错误,即使在这个论坛上尝试了其他解决方案,你可以请检查它这是一行,给出了错误 如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('1')) 错误 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 9位于java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47) 位于java.base/java.lang.String.ch

我得到了相同的错误,即使在这个论坛上尝试了其他解决方案,你可以请检查它这是一行,给出了错误

如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('1'))

错误

java.lang.StringIndexOutOfBoundsException:字符串索引超出范围: 9位于java.base/java.lang.StringLatin1.charAt(StringLatin1.java:47) 位于java.base/java.lang.String.charAt(String.java:693) main(associatingnumber.java:40)
无论如何,这里是完整的代码

import java.io.*;
公共类吸引人的数字
{
公共静态void main(字符串Args[])引发IOException
{
DataInputStream in=新的DataInputStream(System.in);
System.out.println(“输入上限和下限”);
int m=Integer.parseInt(in.readLine());
int n=Integer.parseInt(in.readLine());
int a1=0;
int a2=0;
int a3=0;
int a4=0;
int a5=0;
int a6=0;
int a7=0;
int a8=0;
int a9=0;
int i=0;
int j=0;
如果(m>n | | m9999)
{
System.out.println(“无效输入”);
}
其他的
{
对于(i=m;i0&&fin.charAt(j)==('2'))
{
a2=a2+1;
}
其他的
{
a2=a2+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('3'))
{
a3=a3+1;
}
其他的
{
a3=a3+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('4'))
{
a4=a4+1;
}
其他的
{
a4=a4+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('5'))
{
a5=a5+1;
}
其他的
{
a5=a5+0;
}   
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('6'))
{
a6=a6+1;
}
其他的
{
a6=a6+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('7'))
{
a7=a7+1;
}
其他的
{
a7=a7+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('8'))
{
a8=a8+1;
}
其他的
{
a8=a8+0;
}
如果(fin!=null&&fin.length()>0&&fin.charAt(j)==('9'))
{
a9=a9+1;
}
其他的
{
a9=a9+0;
}
如果(a1==1&&a2==1&&a3==1&&a4==1&&a5==1&&a6==1&&a7==1&&a8==1&&a9==1)
{
System.out.println(“迷人的数字是”+i);
}
}
}
}
}
}
  • 以下代码行的含义是什么?你能告诉我m和n的值是多少吗
  • if(m>n | | m<100 | | n>9999){
    System.out.println(“无效输入”);
    }
    
  • 您只需要在下面的行中进行更新

  • for(j=0;j@HenryTwist但我只是想得到一个字符,而不是一个子字符串。为什么只有一个字符会出现这种情况?正如我链接的帖子中的答案所说:“抛出它是为了表明某种类型的索引(例如数组、字符串或向量)超出范围。例如,使用列表。”。因此,您正在使用的索引超出了字符串大小的界限。它怎么可能超出界限?我正在运行一个从0到字符串最后一个字符索引的循环?@HenryTwist您实际上一直在运行它,直到最后一个字符之后的字符,而最后一个字符不存在。我建议您检查这个(旧但仍然很好)关于的文章。如果您投入精力进行调试,您大部分时间都可以自己发现问题。您的问题在于您正在使用
    
    
        import java.io.*;
    public class FascinatingNumber
    {
        public static void main(String Args[])throws IOException
        {
            DataInputStream in=new DataInputStream(System.in);
            System.out.println("Enter upper limit and lower limit");
            int m=Integer.parseInt(in.readLine());
            int n=Integer.parseInt(in.readLine());
            int a1=0;
            int a2=0;
            int a3=0;
            int a4=0;
            int a5=0;
            int a6=0;
            int a7=0;
            int a8=0;
            int a9=0;
            int i=0;
            int j=0;
                        if (m>n || m<100 || n>9999)
            {
                System.out.println("INVALID INPUT");
            
            }
            else
                {
                    
                    for(i=m ;i<=n; i++)
                        {
                         int num=i;
                         int num1=i*2;
                         int num2=i*3;
                         String s1=Integer.toString(num);
                         String s2=Integer.toString(num1);
                         String s3=Integer.toString(num2);
                         String fin= s1+s2+s3;
                         for (j=0;j<=fin.length();j++)
                          {
                            if (fin!=null && fin.length()>0 && fin.charAt(j)== ('1'))
                             {
                                 a1=a1+1;
                             }
                             else 
                             {
                                 a1=a1+0;
                                }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('2'))
                             {
                                 a2=a2+1;
                             }
                             else 
                             {
                                 a2=a2+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('3'))
                             {
                                 a3=a3+1;
                             }
                             else 
                             {
                                 a3=a3+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('4'))
                             {
                                 a4=a4+1;
                             }
                             else 
                             {
                                 a4=a4+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('5'))
                             {
                                 a5=a5+1;
                             }
                             else 
                             {
                                 a5=a5+0;
                             }   
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('6'))
                             {
                                 a6=a6+1;
                             }
                             else 
                             {
                                 a6=a6+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('7'))
                             {
                                 a7=a7+1;
                             }
                             else 
                             {
                                 a7=a7+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('8'))
                             {
                                 a8=a8+1;
                             }
                             else 
                             {
                                 a8=a8+0;
                             }
                             if (fin!=null && fin.length()>0 && fin.charAt(j)==('9'))
                             {
                                 a9=a9+1;
                             }
                             else 
                             {
                                 a9=a9+0;
                             }
                             if(a1==1 && a2==1 && a3==1 && a4==1 && a5==1 && a6==1 && a7==1 && a8==1 && a9==1)
                              {
                                  System.out.println("Fascinating number is "+ i);
                              }
                          }
                        }
                    }
                
            }
            }
            
    
        
        
    
    if (m > n || m < 100 || n > 9999) {
                System.out.println("INVALID INPUT");
    }
    
    for (j=0;j<=fin.length();j++)