猿问

初始化的整数被称为 charAt 的索引值,但是我不能减少索引整数的值

老实说,我对 Java 的了解比我想了解的要少得多。目的是确定给定的字符串是否为回文。为此,我的代码的目的是读取给定字符串的每个字符并将其复制到反向字符串中,然后比较字符串以查找它们是否相同。


根据 CodeSignal,在第 8 行它需要一个分号;但是,那里已经存在一个,并且我已经尝试了我能想到的所有解决方案,我可能只是误解了语法。以下是我当前的代码,如果有任何帮助,我将不胜感激,谢谢。


代码:


boolean checkPalindrome(String inputString) {

    String reverseString = 0;

    int x = inputString.length;

    int b = inputString.length;

    for (int i = 0; i > x; i++) {

        char a = str.charAt(b);

        int b - 1;

        String reverseString = reverseString + "a";

    }

    if (reverseString == inputString) {

        return false;

    } else {

        return true;

    }

}       

显示的错误消息是:


file.java on line 8: error: ';' expected

       int b - 1;

       1 error


蛊毒传说
浏览 171回答 3
3回答

慕仙森

您不能多次声明变量int b =如果您想减少b价值,只需使用--as post- decrementb--;或者预减--b;-- 减量运算符;将值减 1

BIG阳

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

子衿沉夜

不仅降低了 的值b,而且您的代码中还存在一些永远无法成功编译的错误。实际上,整个代码充满了错误。我一一指出错误,但给你一个建议,在实际解决问题之前,请尝试正确学习JAVA编程的基础知识。1.String reverseString = 0;该行应该会出现编译错误,因为 int 无法转换为 String。正确的语法可以是这样的:String&nbsp;reverseString&nbsp;=&nbsp;"";2.int x = inputString.length;在 Java 中,length变量适用于数组,而对于字符串,length()方法也是如此。所以,修复是:int&nbsp;x&nbsp;=&nbsp;inputString.length();3.int b = inputString.length;当您charAt(b)稍后获取代码时,您将获得StringIndexOutOfBoundsException.&nbsp;因为索引charAt()从 0 开始到 string_length - 1 结束。所以,修正是:int&nbsp;b&nbsp;=&nbsp;x;4.for (int i = 0; i > x; i++)完全错误的逻辑,正确检查条件。i > x意味着循环根本不会继续进行。所以,应该是:for&nbsp;(int&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;<&nbsp;x;&nbsp;i++)5.int b - 1;明显错误的语法。如果你想减少变量值,你不需要在int对已经声明的变量进行每个操作之前。因此,正确的语法可以是:b&nbsp;=&nbsp;b&nbsp;-&nbsp;1;或者,简单地说:b--;6.String reverseString = reverseString + "a";一旦我告诉你应该在声明期间为变量使用一次数据类型。这里也"a"只是一个字符串。要获取变量值,您应该使用 justa而不是 with&nbsp;""。所以,修复是:reverseString&nbsp;=&nbsp;reverseString&nbsp;+&nbsp;a;7.if&nbsp;(reverseString&nbsp;==&nbsp;inputString)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; } else&nbsp;{&nbsp; &nbsp;&nbsp;&nbsp;return&nbsp;true; }首先,我们不使用==符号比较 java 中的字符串相等性。那是因为==只比较对象而不是字符串中的实际内容。在这种情况下,您必须使用.equals()方法。另一件事是,由于您的方法名称是checkPalindrome(),理想情况下它应该在回文时返回 true ,在不是时返回 false 。但是,你正在做相反的事情。IDK,也许您也在您内部main()或从您调用此方法的地方以相反的方式正确处理此问题。因此,更正将是:if (reverseString.equals(inputString))&nbsp; return true;else&nbsp; return false;所以,就是这样完整的方法将是这样的:boolean checkPalindrome(String inputString) {&nbsp; &nbsp; String reverseString = "";&nbsp; &nbsp; int x = inputString.length();&nbsp; &nbsp; int b = x;&nbsp; &nbsp; for (int i = 0; i < x; i++) {&nbsp; &nbsp; &nbsp; &nbsp; char a = inputString.charAt(b);&nbsp; &nbsp; &nbsp; &nbsp; b--;&nbsp; &nbsp; &nbsp; &nbsp; reverseString = reverseString + a;&nbsp; &nbsp; }&nbsp; &nbsp; if (reverseString.equals(inputString))&nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; return false;}代码可以进一步简化为:boolean checkPalindrome(String inputString) {&nbsp; &nbsp; String reverseString = "";&nbsp; &nbsp; int x = inputString.length();&nbsp; &nbsp; for (int i = x - 1; i >= 0; i--)&nbsp; &nbsp; &nbsp; &nbsp; reverseString += inputString.charAt(i);&nbsp; &nbsp; if (reverseString.equals(inputString))&nbsp; &nbsp; &nbsp; &nbsp; return true;&nbsp; &nbsp; else&nbsp; &nbsp; &nbsp; &nbsp; return false;}
随时随地看视频慕课网APP

相关分类

Java
我要回答