理解回文伪代码

Understanding palindrome pseudocode

对于我的作业,我必须编写并测试一个 Java 程序以读取多个 输入行,直到读取空行。读取每一行后,我必须确定该行是否包含回文,如果确实包含回文,我必须打印它是哪种类型的回文(单词、短语或数字)。为了完成回文部分,我必须使用伪代码。

伪代码为:

注:以下符号表示赋值

左  0

right  最后一个字符在字符串中的位置

好  正确

还好,左<右

ch1  位置(左)处字符串中的字符

如果 ch1 不是数字或字母

向左增加

其他

ch2  字符串中位置(右)的字符

如果 ch2 不是数字或字母

右减

其他

将 ch1 和 ch2 都转换为大写

如果 ch1 = ch2

向左增加

右减

其他

好  错

结束

结束

结束

结束时

return还行

我目前拥有的是:

import java.util.Scanner;
public class Project4
{
public static void main (String [] args)
{

    String line = getInputLine();
    while (!isEmptyLine (line))
    {
        if (isPalindrome (line))
            System.out.println ("\"" + line + "\" is a palindrome and a " + getPalType (line));
        else
            System.out.println ("\"" + line + "\" is not a palindrome");
        line = getInputLine();
    }
System.out.println ("End of program");
}

public static String getInputLine()
{
    System.out.println("Enter a line of input: ");
    Scanner in = new Scanner(System.in);
    String line = in.next();
    System.out.println(line);
    return line;
}

public static boolean isEmptyLine (String str)
{
    boolean isEmptyLine;

    if( str == null)
        isEmptyLine = true;
    else
        isEmptyLine = false;

    return true;
}

public static boolean isPalindrome (String str)
{
    Scanner word = new Scanner(System.in);
    String isPalindrome = word.next();
    int strLength = isPalindrome.length();

    while(true && 0 < isPalindrome.charAt(isPalindrome.length() -1))
    {

        if(Character.isDigit(strLength) || Character.isLetter(0))
        {

我还没有完成,但我需要帮助来理解如何使用伪代码。我不太明白第一个 if 语句部分。如果有人有时间解释代码,我将不胜感激。

我发现理解这样的伪代码的最好方法就是在开始编写任何代码之前使用一张纸来浏览它。写出类似 "abcdcba"

的内容

用左右食指左右追踪变量。您将从左手手指开始最左边的字符,然后将右手手指放在最后一个字符上。现在只需按说明进行操作即可。

基本思路是比较左边的字符和右边的字符。如果相同,则向左向右移动一个位置,向右向左移动一个位置。重复。

您将跳过所有非字母数字字符。字符也被转换为大写以避免任何大小写敏感性。

如果在任何时候左边的字符与右边的字符不匹配,那么我们就没有回文。如果左右相遇,或者互相超越,到那时一切都匹配,那么我们就有了。

既然你询问了第一个 if 语句,就知道 Java 的角色 class 提供了

public static boolean isLetterOrDigit(char ch)

您可以使用:

if (! Character.isLetterOrDigit(ch1))  { ...

附带说明一下,您的 isEmptyLine() 方法始终 returns 为真。整个方法应该重写为:

public static boolean isEmptyLine(String str) {
    return (str == null);
}

就此而言,可以完全删除该方法,只需将您的 while 循环重写为:

while(line != null)  {