-2

所以扫描仪的第一个 int 很好。但是当我输入下一行时,系统告诉我它超出了 if (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;
    }
4

3 回答 3

0

nextInt()首先,您需要通过调用来摆脱呼叫中的行终止符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;
    }

查看此内容以获取有关扫描仪问题的更详细说明

于 2020-02-24T00:22:43.023 回答
0

“超出范围”通常意味着您要的商品超出实际尺寸。例如,如果您要求从长度只有两项的数组中获取第三项。

在这种情况下,您要求的字符超出了字符串的长度。

如果length大于a或的实际长度b,您将收到此错误。

于 2020-02-23T23:29:17.230 回答
0

您假设 a 和 b 都比length字符长。问题不在于可比值超出范围,而是当您尝试在一个或其他字符串中的特定点处进行索引时,会出现超出范围的错误。

于 2020-02-23T23:29:43.557 回答