java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:9
我得到了相同的错误,即使在这个论坛上尝试了其他解决方案,你可以请检查它这是一行,给出了错误 如果(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)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
无论如何,这里是完整的代码
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);
}
}
}
}
}
}
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++)