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 让数组出界_Java_String_Repeat_Indexoutofrangeexception - Fatal编程技术网

Java 让数组出界

Java 让数组出界,java,string,repeat,indexoutofrangeexception,Java,String,Repeat,Indexoutofrangeexception,我正在做黑客等级的热身,我有重复字符串的逻辑,但得到的字符串索引超出范围,不知道如何修复它。有人能帮忙吗 public static long countAs(String s, long n) { long count; long length = s.length(); long q = n / length; long r = n % length; long partial = 0; partial = r; count =

我正在做黑客等级的热身,我有重复字符串的逻辑,但得到的字符串索引超出范围,不知道如何修复它。有人能帮忙吗

public static long countAs(String s, long n) {

    long count;
    long length = s.length();
    long q = n / length;
    long r = n % length;

    long partial = 0;

    partial = r;

    count = q * getLetterCount(s, q) + getLetterCount(s, partial);


    return count;
}

public static long getLetterCount(String s, long length) {

    long count = 0;


    for (int i = 0; i < length; i++) {

        if (s.charAt(i) == 'a') {

            count++;
        }
    }
    return count;
}
公共静态长countAs(字符串s,长n){
长计数;
长长度=s.长度();
长q=n/长度;
长r=n%长度;
长部分=0;
部分=r;
count=q*getLetterCount(s,q)+getLetterCount(s,partial);
返回计数;
}
公共静态long getLetterCount(字符串s,长){
长计数=0;
for(int i=0;i
您的代码中只有一个地方会发生这种情况:

for (int i = 0; i < length; i++) {
    if (s.charAt(i) == 'a') { // <- HERE
        count++;
    }
}
for(int i=0;ifor(int i=0;i
对于这一行,i是int,长度是长的,它们有不同的值范围!
当i=int_max+1时,运行时错误将出现

什么是
n
?在上一次迭代中,基本上是
s.charAt(n/length-1)
。如果
n>length^2
则会出现错误。而且,这看起来根本不像是重复一个字符串。它更像是在数东西。请显示
countAs()的调用
抱歉,伙计们。n将是我从中计算a的字符串。如果我是“aba”它会说字符串是q=| aba | r=abaaba,这样你就不必用蛮力通过它了。对于getLetterCount(string s,Long l)string s=“aba”的调用,Long l=10将是示例参数
 for (int i = 0; i < length; i++)