Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/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 查拉特(我)怎么出界了?少了什么?_Java - Fatal编程技术网

Java 查拉特(我)怎么出界了?少了什么?

Java 查拉特(我)怎么出界了?少了什么?,java,Java,所以扫描仪的第一个int很好。但是当我输入下一行时,系统告诉我,如果(a.charAt(I)=b.charAt(I)),它在处超出了界限。比较的东西怎么会越界呢 Scanner k = new Scanner(System.in); int length = k.nextInt(); String a = k.nextLine(); String b = k.nextLine(); String c = " "; String d; fo

所以扫描仪的第一个int很好。但是当我输入下一行时,系统告诉我,如果(a.charAt(I)=b.charAt(I)),它在
处超出了界限。比较的东西怎么会越界呢

    Scanner k = new Scanner(System.in);
    int length = k.nextInt();
    String a = k.nextLine();
    String b = k.nextLine();
    String c = " ";
    String d;

    for (int i = 0; i<length; i++){
        if (a.charAt(i)==b.charAt(i)){
            d = "0";
        } else {
            d = "1";
        }
        c = c+d;
    }
Scanner k=新的扫描仪(System.in);
int length=k.nextInt();
字符串a=k.nextLine();
字符串b=k.nextLine();
字符串c=“”;
字符串d;

for(int i=0;i“Out-bounds”通常表示您请求的项目超出了实际大小。例如,如果您从长度只有两个项目的数组中请求第三个项目

在本例中,您要求的字符超出字符串长度


如果
length
大于
a
b
的实际长度,则会出现此错误。

您假设a和b都大于
length
字符。问题不是可比字符超出范围,而是当您尝试在一个或多个字符中的特定点建立索引时e其他字符串存在超出范围的错误。

首先,需要通过调用
nextLine()
nextLine()调用中删除行终止符。这是问题的实际根源。它仍在输入缓冲区中,并导致以下
nextLine()
读取空行。然后我建议您修改代码以进行检查以验证长度

Scanner k = new Scanner(System.in);
    int length = k.nextInt();
    k.nextLine(); // get rid of lingering line terminator.
    String a = k.nextLine();
    String b = k.nextLine();

    if (a.length() != length && b.length() != length) {
        System.out.println("Inconsistent or incorrect lengths");
        return; // assumes you are in main
    }     


    String c = " ";
    String d;

    for (int i = 0; i<length; i++){
        if (a.charAt(i)==b.charAt(i)){
            d = "0";
        } else {
            d = "1";
        }
        c = c+d;
    }
Scanner k=新的扫描仪(System.in);
int length=k.nextInt();
k、 nextLine();//摆脱延迟行终止符。
字符串a=k.nextLine();
字符串b=k.nextLine();
如果(a.长度()!=长度和&b.长度()!=长度){
System.out.println(“不一致或不正确的长度”);
return;//假设您在main中
}     
字符串c=“”;
字符串d;

对于(int i=0;i)您在导致该错误的过程中输入了哪三个值?8对于第一个值很好,gghgggh是当它给出错误时