代码之家  ›  专栏  ›  技术社区  ›  Brendon Baughn

输入变量未在每次迭代中重置

  •  0
  • Brendon Baughn  · 技术社区  · 6 年前

    在我的代码中,我正在测试palidromes,但是我的输入变量并没有随着每次迭代而重置。测试在第一次运行时是完美的,但是在输入相同的情况下,结果是错误的。

    Scanner input = new Scanner(System.in);
    int i;
    System.out.print("Enter a string: ");
    String pal = input.nextLine();
    String reverse = "";
    boolean isFalse = false;
    
    while (!isFalse) {
        if (pal.isEmpty()) {
            System.out.println("Empty line read - Goodbye!");
            isFalse = true;
        }
        if (pal.length() > 0) {
            for (i = pal.length() - 1; i >= 0; --i) {
                reverse = reverse + pal.charAt(i);
            }
            if (pal.equals(reverse)) {
                System.out.println(pal + " is a palidrome");
                System.out.println();
            } else {
                System.out.println(pal + " is not a palidrome");
                System.out.println();
            }
            System.out.print("Enter a string: ");
            pal = input.nextLine();
        }
    }
    

    pal是输入变量。在调试时,我打印了pal的结果。1331作为回文出现,但是当我重新输入1331时,程序输出了一个错误的语句。有什么建议吗? 编辑:我在while循环上面添加了其余的代码

    1 回复  |  直到 6 年前
        1
  •  3
  •   buræquete Naveen Kocherla    6 年前

    您应该重置变量 reverse 通过写作 reverse = ""; 在for循环之前:

    reverse = "";
    for (i = pal.length() - 1; i >= 0; --i) {
        reverse += pal.charAt(i);
    }