【问题标题】:Palindrome code not working well in Java回文代码在 Java 中无法正常工作
【发布时间】:2015-07-01 10:08:32
【问题描述】:

这是我正在做的一项任务,我似乎无法让它正常工作。

问题如下。

回文是向前读相同的单词或短语,并且 向后,忽略空格并考虑大写和小写 相同字母的版本相等。例如,以下是 回文:

  1. 疣和稻草
  2. 雷达
  3. 我能在我看到厄尔巴岛之前
  4. 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);
   }
}

这是结果:

输入一个字符串字符,以句点结尾。

雷达。

雷达。是回文。

继续还是退出?

继续

使用

使用是回文。

继续还是退出?

继续

使用。

使用。是回文。

继续还是退出?

继续

苹果。

苹果。是回文。

继续还是退出?

退出

请告诉我哪里出错了。

【问题讨论】:

    标签: java arrays


    【解决方案1】:

    您正在使用此调用检查字符串是否为回文:

    if(word.isPalindrome(chars, used))
    

    但是,used 是 0,所以你的方法总是返回 true。

    你也忽视了你的任务说明。你没有对 chars 数组做任何事情,你没有删除应该在输入字符串末尾的句点,你的 isPalindrome 方法不是静态的,等等......

    【讨论】:

    • chars 也从未被分配,事实上char[] a 从未在isPalindrome() 中使用。
    【解决方案2】:

    你犯了一个很小的错误。你每次都将“使用”变量发送为 0。理想情况下,它应该是一个单词的长度。 请检查一下。使用

    used = data.length();
    

    在发送到检查方法之前

    【讨论】:

      猜你喜欢
      • 2017-02-28
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 1970-01-01
      相关资源
      最近更新 更多