Java 查拉特(我)怎么出界了?少了什么?
所以扫描仪的第一个int很好。但是当我输入下一行时,系统告诉我,如果(a.charAt(I)=b.charAt(I)),它在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
处超出了界限。比较的东西怎么会越界呢
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是当它给出错误时