繁体   English   中英

爪哇回文直到EOF

[英]Java palindrome until EOF

我有一个程序应该询问用户一个数字,它将确定它是否是回文。 在输入EOF之前,它应该一直要求输入数字-到目前为止,它要求输入两次该数字,并且似乎并没有正确地执行while循环。

任何见解表示赞赏

import java.util.Scanner;
public class PalindromeEOF
{
public static void main(String args[])
{
    Scanner scanner = new Scanner(System.in);        
    System.out.println("Enter a number to check if it is a palindrome:");

    String num = scanner.nextLine();
    String reverse = "";

    while (scanner.hasNextLine())
    {
        for ( int i = 0; i<num.length(); i++ )
        {
            reverse = num.charAt(i) + reverse;
        }
        if (num.equals(reverse))
        {
            System.out.println("\nEntered number IS a palindrome.");
        }
        else
        {
            System.out.println("\nEntered number is NOT a palindrome.");
        }
        System.out.println("\nEnter a number to check if it is a palindrome:");
        num = scanner.nextLine();
        reverse = "";
    }
    System.out.println("\nProgram ended on request");
}
}

这对我有用; 除非在while循环外需要numreverse否则它应该起作用。

import java.util.Scanner;
public class PalindromeEOF
{
    public static void main(String args[])
    {
        Scanner scanner = new Scanner(System.in);        
        System.out.println("Enter a number to check if it is a palindrome:");

        while (scanner.hasNextLine())
        {
            String num = scanner.nextLine();
            String reverse = "";

            for ( int i = 0; i<num.length(); i++ )
            {
                reverse = num.charAt(i) + reverse;
            }
            if (num.equals(reverse))
            {
                System.out.println("\nEntered number IS a palindrome.");
            }
            else
            {
                System.out.println("\nEntered number is NOT a palindrome.");
            }
            System.out.println("\nEnter a number to check if it is a palindrome:");

        }
        System.out.println("\nProgram ended on request");
    }
}

我将回文法测试分为自己的方法。 您可以通过一种方法来做到这一点

public static boolean isPalindrome(String str) {
    return new StringBuilder(str).reverse().toString().equals(str);
}

但我希望迭代字符的前半部分,然后将它们与后半部分进行比较,例如

public static boolean isPalindrome(String str) {
    if (str == null) {
        return false;
    }
    char[] chars = str.toCharArray();
    for (int i = 0; i * 2 <= chars.length; i++) {
        if (chars[i] != chars[chars.length - i - 1]) {
            return false;
        }
    }
    return true;
}

然后您的main可以在无限循环中调用它(终止于缺少输入),例如

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    while (true) {
        System.out.println("Enter a number to check if it is a palindrome:");
        if (!scanner.hasNextLine()) {
            break;
        }
        String num = scanner.nextLine();
        if (isPalindrome(num)) {
            System.out.printf("%s is a palindrome%n", num);
        } else {
            System.out.printf("%s is NOT a palindrome%n", num);
        }
    }
    System.out.println("Program ended on request");
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM