Java 初始化的整数被称为字符索引的值,但是我可以';t减小索引整数的值

Java 初始化的整数被称为字符索引的值,但是我可以';t减小索引整数的值,java,Java,我正在Codesignal.com上练习Java,然而,老实说,我对Java的理解远不如我所想的。目的是确定给定字符串是否为回文。为此,我的代码的目的是读取给定字符串的每个字符,并将其复制到一个反向字符串中,然后比较字符串以确定它们是否相同 根据CodeSignal,在第8行,它需要一个分号;然而,一个已经存在,我已经尝试了我能想出的每一个解决方案,我可能只是误解了语法。以下是我目前的代码,我将感谢任何帮助,谢谢 代码: 显示的错误消息为: 修复语法错误相当简单。您已经告诉Java要在intb=

我正在Codesignal.com上练习Java,然而,老实说,我对Java的理解远不如我所想的。目的是确定给定字符串是否为回文。为此,我的代码的目的是读取给定字符串的每个字符,并将其复制到一个反向字符串中,然后比较字符串以确定它们是否相同

根据CodeSignal,在第8行,它需要一个分号;然而,一个已经存在,我已经尝试了我能想出的每一个解决方案,我可能只是误解了语法。以下是我目前的代码,我将感谢任何帮助,谢谢

代码:

显示的错误消息为:


修复语法错误相当简单。您已经告诉Java要在
intb=inputString.length行创建一个名为
b
的变量,所以当它看到
intb-1
Java认为您正在尝试创建一个名为
b
的新变量。我假设您想从
b
中减去一,要执行此操作,请将行更改为
b=b-1

不能多次声明变量
int b=

如果要减小
b
值,只需使用
--
作为post-

或预减量

--b;
--减量算子;将值递减1


不仅降低了
b
的值,而且代码中还有几个错误永远不会成功编译。实际上,整个代码充满了错误。我一个接一个地指出错误,但对你有一个建议,在动手解决实际问题之前,试着正确地学习JAVA编程的基础知识


1.

字符串反向限制=0

由于int无法转换为String,因此该行出现编译错误

正确的语法可以如下所示:

String reverseString = "";
boolean checkPalindrome(String inputString) {
    String reverseString = "";
    int x = inputString.length();
    int b = x;
    for (int i = 0; i < x; i++) {
        char a = inputString.charAt(b);
        b--;
        reverseString = reverseString + a;
    }
    if (reverseString.equals(inputString))
        return true;
    else
        return false;
}

2.

intx=inputString.length

在Java中,
length
变量适用于数组,而对于字符串,
length()

因此,解决办法是:

int x = inputString.length();
reverseString = reverseString + a;

3.

intb=inputString.length

当您稍后在代码中获取
charAt(b)
时,您将获得
StringIndexOutOfBoundsException
charAt()
中的As索引从0开始,以字符串长度-1结束

因此,更正是:

int b = x;

4.

for(inti=0;i>x;i++)

完全错误的逻辑,正确检查条件
i>x
意味着循环根本不会继续。因此,它应该是:

for (int i = 0; i < x; i++)
或者,简单地说:

b--; 

6.

String reverseString=reverseString+a

我曾经告诉过您,在声明过程中应该对变量使用一次数据类型。而且
“a”
在这里只是一个字符串。要获取变量值,您应该只使用
a
,而不是使用
”。因此,解决办法是:

int x = inputString.length();
reverseString = reverseString + a;

7.

第一件事是,我们不使用
==
符号来比较java中的字符串相等性。这是因为
==
只是比较对象,而不是字符串中的实际内容。在这种情况下,必须使用
.equals()
方法。另一件事是,由于方法名是
checkPalindrome()
,理想情况下,当它是回文时,它应该返回true,当它不是回文时,它应该返回false。但是,你的做法是相反的。IDK,可能是您在
main()
内部或从调用此方法的位置以相反的方式正确处理此问题

因此,修正将是:

if (reverseString.equals(inputString))
  return true;
else
  return false;

就这些了

完整的方法如下所示:

String reverseString = "";
boolean checkPalindrome(String inputString) {
    String reverseString = "";
    int x = inputString.length();
    int b = x;
    for (int i = 0; i < x; i++) {
        char a = inputString.charAt(b);
        b--;
        reverseString = reverseString + a;
    }
    if (reverseString.equals(inputString))
        return true;
    else
        return false;
}

您打算用
intb-1执行什么<代码>b--
?另外,在提出下一个问题之前,请先阅读。您对每个错误的详细分析对我帮助很大,因为它解释了每个错误或问题,并展示了更好的执行方法。非常感谢:)
boolean checkPalindrome(String inputString) {
    String reverseString = "";
    int x = inputString.length();
    int b = x;
    for (int i = 0; i < x; i++) {
        char a = inputString.charAt(b);
        b--;
        reverseString = reverseString + a;
    }
    if (reverseString.equals(inputString))
        return true;
    else
        return false;
}
boolean checkPalindrome(String inputString) {
    String reverseString = "";
    int x = inputString.length();
    for (int i = x - 1; i >= 0; i--)
        reverseString += inputString.charAt(i);
    if (reverseString.equals(inputString))
        return true;
    else
        return false;
}