java - 为什么 boolean 值没有改变?

标签 java

我正在一步步学习java:

我有一个练习题 problem statement link这是我的代码:

import java.util.Scanner;

public class Solution {

public static void main(String[] args) {
    int test, numProcess = 0;
    boolean checkString ;
    String alpha = "abcdefghijklmnopqrstuvwxyz";
    Scanner sc = new Scanner(System.in);
    test = sc.nextInt();
    for (int i = 0; i < test; i++) {
        String original = sc.nextLine();
        checkString = checkPalindrome(original);
        while (!checkString) {
            char oldchar = original.charAt((original.length() - 1));
            char newchar = alpha.charAt((original.indexOf(oldchar) - 2));
            original = original.substring(0, original.length()-1)+ newchar;
            checkString = checkPalindrome(original);
            numProcess++;
        }
        System.out.println(numProcess);
    }

    sc.close();
}

public static boolean checkPalindrome(String original) {
    String newString = "";
    for (int i = (original.length() - 1); i >= 0; i--) {
        newString += original.charAt(i);
    }
    return (newString.equals(original));
 }
}

问题是当我们尝试作为输入时,

  1. "abc" 作为字符串(在 WHILE LOOP 中)第一次迭代使原始 = abb 然后转到返回 false 的函数(没错)
  2. 在第二次迭代中,original = aba 应该返回 checkString = true;
  3. 下次 while 循环应该被绕过,但它再次进入 while 循环(我在调试器中尝试过这个)并在以下位置抛出异常 包含 newchar(Index out ofbound) 的行有什么问题?

最佳答案

首先,如果你输入的是abc。您的代码将引发异常

Scanner sc = new Scanner(System.in);
test = sc.nextInt(); // reading an int

当您输入abc时。

您正在尝试查找给定的字符串是否是回文,您可以按照以下方式轻松完成。

public static boolean isPalindrome(String original) {
    StringBuilder sbOriginal = new StringBuilder();
    sbOriginal.append(original);
    StringBuilder sbReverse=sbOriginal.reverse();
    return  sbOriginal.toString().equals(sbReverse.toString());
}

Run This code .

关于java - 为什么 boolean 值没有改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25971633/

相关文章:

java - 通过 Android 应用程序注册教师?

java - 谷歌云平台上的 Angular2 前端 Spring Boot 后端

java - 了解线程安全

java - 使用 Java 从 WSDL 文件创建现有 Web 服务的客户端

java - PowerMock 链接错误 : MockClassLoader javax/management/MBeanServer

java - 令人困惑的 Sonar 错误

Java XML 转换器仅输出 XML header

java - Flink session 窗口的延迟输出缺失

Java:如何清除套接字绑定(bind)

java - 如何在Android中的spinner中加载数据?