Java jva中的字符串索引超出范围
如果字符串的拼写方式相同,那么它就是回文 前进 回文的例子包括“雷达”和“该死的,我疯了!” 编写一个java程序Palindromester,要求用户输入 然后检查输入的字符串是否为 回文与否 空间,非代数.,!:?-\;,字符串中的大小写 被忽视,例如,呆板的傻瓜,冷淡的吟游诗人。是一个 回文的 您的实现应该定义并使用isAlindrome方法 测试某个字符串是否为回文。签名 isPalindrome方法如下所示:Java jva中的字符串索引超出范围,java,string,methods,char,boolean,Java,String,Methods,Char,Boolean,如果字符串的拼写方式相同,那么它就是回文 前进 回文的例子包括“雷达”和“该死的,我疯了!” 编写一个java程序Palindromester,要求用户输入 然后检查输入的字符串是否为 回文与否 空间,非代数.,!:?-\;,字符串中的大小写 被忽视,例如,呆板的傻瓜,冷淡的吟游诗人。是一个 回文的 您的实现应该定义并使用isAlindrome方法 测试某个字符串是否为回文。签名 isPalindrome方法如下所示: boolean isPalindrome(String) 下面是该程序的运
boolean isPalindrome(String)
下面是该程序的运行示例。用户的输入以粗体显示
java PalindromeTester
Introduction to Computer Programming (CMPS 200)
Spring 2015-16 2 of 3
Enter a string: I love CMPS 200
The string "I love CMPS 200" is NOT a palindrome.
这是我写的代码,它一直给我一个错误
我想知道我的错误是什么,是否有一种更快更简单的方法来编写这段代码
索引超出范围是由z=z+1后的回文字符引起的 保持简单:
public static boolean isPalindrome(String palindrome)
{
palindrome = palindrome.replaceAll("\\W", ""); // remove all non word character
palindrome = palindrome.toLowerCase();
int size = palindrome.length();
int halfSize = size / 2;
for (int i = 0; i < halfSize; i++)
{
if(palindrome.charAt(i) != palindrome.charAt(size - i - 1))
return false;
}
return true;
}
一种方法是从字符串中去掉非字母字符。然后检查字符串是否与自身相同,大写字母为:
public static boolean isPalindrome(String palindrome) {
StringBuilder sanitisedString = new StringBuilder();
for(char c : palindrome.toCharArray()) {
if(Character.isLetter(c)) {
sanitisedString.append(c);
}
}
return sanitisedString.toString().toUpperCase().equals(sanitisedString.reverse().toString().toUpperCase());
}
为什么不创建一个新字符串并将反向的sourceString保存在其中呢
public static boolean readstring(String s)
{
String b = "";
for (int i= s.length() -1; i >=0 ;i--)
{
b = b + s.charAt(i);
}
System.out.print(b +" and "+ s +" ");
return b == s || b.Equals(s);
}
编辑:希望这符合要求,顺便说一句,不要使用“忽略”一词,而是“允许”您的halfsize变量存储字符串长度的一半,但您的循环仅在该长度的一半以下-因此您只检查字符串的1/4。此外,您没有处理需要忽略的标点符号和空白字符。循环将同时检查前半部分和后半部分。为什么是1/4?因为您的循环停止在半大小/2。请显示您得到的错误。线程主java.lang.StringIndexOutOfBoundsException中的异常:字符串索引超出范围:7位于java.lang.String.charAtUnknown Source位于palindromepalindromester.ispalindromepalindromester.java:23位于palindromester.mainpalindromester.java:8是错误i盖蒂曾考虑过这个问题,但把它删除了。所以我又添加了它。如果有标点符号或空白字符,代码将返回false。这不符合要求。在决定字符串是否为回文时,您的代码应该忽略标点和空格。是的,请再次阅读,您是对的,更改了上面的代码,但我不确定它是否仍然符合要求。谢谢您的回答,不过,最好添加代码的解释,以及为什么它会是一个更好的答案,并且值得一些投票。它会帮助别人向你学习!
public boolean isPalindrome(String word) {
int backward = word.length() - 1;
for (int x = 0; x < word.length(); x++) {
if (word.charAt(x)!= word.charAt(backward--)) {
return false;
}
}
return true;
}
public boolean isPalindrome(String word) {
int backward = word.length() - 1;
for (int x = 0; x < word.length(); x++) {
if (word.charAt(x)!= word.charAt(backward--)) {
return false;
}
}
return true;
}