【发布时间】:2015-07-01 10:08:32
【问题描述】:
这是我正在做的一项任务,我似乎无法让它正常工作。
问题如下。
回文是向前读相同的单词或短语,并且 向后,忽略空格并考虑大写和小写 相同字母的版本相等。例如,以下是 回文:
- 疣和稻草
- 雷达
- 我能在我看到厄尔巴岛之前
- xyzczyx
编写一个程序,接受终止的字符序列 由句号决定是否字符串--没有 period---是一个回文。你可以假设输入只包含 字母和空格,最多 80 个字符。包括一个循环 允许用户检查其他字符串,直到她或他 请求程序结束。
提示:定义一个名为
isPalindrome的静态方法,其开头为 如下:前提条件:数组a中包含字母和空格 职位
a[0]到a[used - 1]。如果字符串是 回文,否则为假。
public static boolean isPalindrome(char[] a, int used)您的程序应将输入字符读入一个数组,其基数为 type 是 char 然后调用前面的方法。使用的 int 变量 跟踪使用了多少数组,如 标题为“部分填充的数组”的部分。
这是我的课程代码:
public class Palindrome_class
{
// instance variable
char[] characterArray;
//constructor
//@param data is a string of characters
public Palindrome_class(String data)
{
characterArray = data.toUpperCase().toCharArray();
}
//@return true if the word is a palindrome, otherwise returns false.
public boolean isPalindrome(char[] a, int used)
{
int i = 0, j = used - 1;
while (i < j)
{
if(characterArray[i] == characterArray[j])
{
i++;
j--;
}
else
{
return false;
}
}
return true;
}
}
这是我的主要代码:
import java.util.Scanner;
public class palindromeTest
{
public static void main(String[] args)
{
int used = 0;
char[] chars = new char[80];
Scanner inputWord = new Scanner(System.in);
Scanner reply = new Scanner(System.in);
System.out.println("Enter a string characters, terminated by a period.");
String data;
String cq;
Palindrome_class word;
do
{
//input word from user.
data = inputWord.nextLine();
word = new Palindrome_class(data);
//check for palindrome.
if(word.isPalindrome(chars, used))
System.out.println(data + " is a palindrome.");
else
System.out.println(data + " is not a palindrome.");
//request to continue or quit.
System.out.println("Continue or Quit?");
cq = reply.nextLine();
}
while (cq.equalsIgnoreCase("continue"));
System.exit(0);
}
}
这是结果:
输入一个字符串字符,以句点结尾。
雷达。
雷达。是回文。
继续还是退出?
继续
使用
使用是回文。
继续还是退出?
继续
使用。
使用。是回文。
继续还是退出?
继续
苹果。
苹果。是回文。
继续还是退出?
退出
请告诉我哪里出错了。
【问题讨论】: