我正在尝试制作一个程序,看看一个单词是否是回文。然而,我得到了上述错误。当我运行这个程序时,它会把单词倒过来,直到没有更多的字母了。那是我得到错误的时候。
// Programmer: Your name
// Class, Section and Term: ...
// Purpose: Find the average of a list of integer numbers. The list is ended with a sentiel value SENTINEL.
// Topic: while-loop
// Import the Scanner Class for input operations.
import java.util.Scanner;
public class SimpleProgram {
public static void main(String[] args) {
// Create the Scanner object, scnr, to perform input operations.
Scanner scnr = new Scanner(System.in);
// Declare the identifiers
String reverse;
reverse = "";
int index;
int number;
String letter;
final String end = "Stop";
System.out.println("Please type a word:");
letter = scnr.next();
index = letter.length() + 0;
while (!letter.equals(reverse) || (index >= 0)) {
// while (letter.equals(reverse.length() + 0));
index--;
// index = letter.length()-1 - index--;
// index + 1;
// System.out.println(index.CharAt(index--));
reverse = reverse + letter.charAt(index);
System.out.println(reverse);
}
if (letter.equals(reverse)) {
System.out.println(letter + " is a palindrome!");
}
else {
System.out.println(letter + " is not a palindrome, spelt backwards it is: " + reverse);
}
scnr.close();
}
}
您只需要更改while条件,看看我的版本就可以了!!
public static void main(String[] args) {
// Create the Scanner object, scnr, to perform input operations.
Scanner scnr = new Scanner(System.in);
// Declare the identifiers
String reverse;
reverse = "";
int index;
int number;
String letter;
final String end = "Stop";
System.out.println("Please type a word:");
letter = scnr.next();
index = letter.length() - 1;
while (!letter.equals(reverse) && (index >= 0)) {
// while (letter.equals(reverse.length() + 0));
// index = letter.length()-1 - index--;
// index + 1;
// System.out.println(index.CharAt(index--));
reverse = reverse + letter.charAt(index);
System.out.println(reverse);
index--;
}
if (letter.equals(reverse)) {
System.out.println(letter + " is a palindrome!");
}
else {
System.out.println(letter + " is not a palindrome, spelt backwards it is: " + reverse);
}
scnr.close();
结果:
olaalo is a palindrome!
StringIndexOutOfBoundsException是一种错误类型,当(如本链接所示("索引是负的或者大于字符串的大小";。
为了防止这种情况,很多时候我们会将while循环或for循环的条件设置为字符串的大小(如果向下,则为零(。你试图这样做,但你的错误仍然存在,所以它一定更深一点。
在您的情况下,这可能是因为String字母永远不会等于reverse,所以while循环将永远继续(因此,当索引变为负数时,StringIndexOutOfBounds(。
要解决此问题,您可能需要重新考虑while循环的条件,而是直接根据字符串的长度使用一些东西(而不是相反的情况是否成立(。