这是我正在做的任务,似乎我无法让它正常工作。
问题如下。
回文是一个单词或短语,读取相同的向前和 向后,忽略空白并考虑大写和小写 相同字母的版本相同。例如,以下是 回文:
- 疣n秸秆
- 雷达
- 能够在我看到厄尔巴岛时
- xyzczyx
醇>编写一个程序,接受一系列字符终止 按一段时间,将决定是否字符串 - 没有 period ---是一个回文。你可以假设输入只包含 字母和空格,最多80个字符。包括一个循环 允许用户检查其他字符串直到她或他 要求程序结束。
提示:定义一个名为
isPalindrome
的静态方法,其开头为 如下:前提条件:数组a包含字母和空格 职位
a[0]
到a[used - 1]
。如果字符串是a,则返回true 回文,否则为假。
public static boolean isPalindrome(char[] a, int used)
您的程序应将输入字符读入基数的数组中 type是char然后调用前面的方法。使用的int变量 跟踪使用了多少阵列,如中所述 题为“#34;部分填充阵列”的部分。"
这是我的班级代码:
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);
}
}
结果如下:
输入字符串字符,以句点结束。
雷达。
雷达。是一个回文。
继续或退出?
继续
使用
使用是回文。
继续或退出?
继续
使用。
使用。是一个回文。
继续或退出?
继续
苹果。
苹果。是一个回文。
继续或退出?
退出
请告诉我我在哪里犯了错误。
答案 0 :(得分:3)
您正在通过此调用检查String是否为回文:
if(word.isPalindrome(chars, used))
但是,used
为0,因此您的方法始终返回true。
您也忽略了作业的指示。你没有对chars
数组做任何事情,你没有删除应该在输入字符串末尾的句点,你的isPalindrome
方法不是静态的等等......
答案 1 :(得分:0)
你做了一个小小的错误。你每次都将“used”变量发送为0。理想情况下,它应该是一个单词的长度。 请检查一下。使用
used = data.length();
将其发送给检查方法