当前位置: 首页 > 知识库问答 >
问题:

Java中的回文数字

商正浩
2023-03-14

我写程序来解决几个关于数字的问题。我的程序应该:

>

  • 欢迎用户

    如果一个数字不是自然的,打印一个错误消息;

    打印自然数的属性;

    在处理完请求后,继续从步骤3开始执行。

    package numbers;
    
    import java.util.Scanner;
    
    public class Main {
    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
        System.out.println("Welcome to Amazing Numbers!\n" +
                "\n" +
                "Supported requests:\n" +
                "- enter a natural number to know its properties;\n" +
                "- enter 0 to exit.\n" +
                "\n" +
                "Enter a request:");
        int number = scanner.nextInt();
        if (number >= 0) {
            System.out.println("Properties of " + number);
            System.out.println("\t even: " + (number % 2 == 0));
            System.out.println("\t odd: " + (number % 2 != 0));
            System.out.println("\t buzz: " + checkBuzzNumber(number));
            System.out.println("\t duck: " + checkDuckNumber(number));
            System.out.println("\t palindromic: " + checkPalindromicNumber(number));
        } else {
            System.out.println("The first parameter should be a natural number or zero.");
        }
    }
    
    public static boolean checkBuzzNumber(int number) {
        return number % 7 == 0 || String.valueOf(number).endsWith("7");
    }
    
    public static boolean checkDuckNumber(int number) {
        String num = String.valueOf(number);
        boolean flag = false;
        if (num.startsWith("0")) {
            return false;
        } else {
            for (int i = 1; i < num.length(); i++) {
                if (num.charAt(i) == '0') {
                    flag = true;
                    break;
                }
            }
            return flag;
        }
    }
    
    public static boolean checkPalindromicNumber(int number) {
        int rem, rev = 0, temp;
        temp = number;
        while (number != 0) {
            rem = number % 10;
            rev = rev * 10 + rem;
            number = number / 10;
        }
        if (temp == rev)
            return true;
        else
            return false;
    }
    
  • 共有1个答案

    荀豪
    2023-03-14

    您只需要一个循环就可以得到所需的输出,下面是代码和注释,以便正确理解。另外,我已经评论了你写的代码,但我从那里删除了。

    import java.util.Scanner;
    
    public class Main {
    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
    //    System.out.println("Welcome to Amazing Numbers!\n" +
    //            "\n" +
    //            "Supported requests:\n" +
    //            "- enter a natural number to know its properties;\n" +
    //            "- enter 0 to exit.\n" +
    //            "\n" +
    //            "Enter a request:");
    //    int number = scanner.nextInt();
        
        //-------------------------------------------------------------
        while (true)// added an infinite while loop, in order to display and take input continuously
        {
            System.out.println("Welcome to Amazing Numbers!\n" +
                    "\n" +
                    "Supported requests:\n" +
                    "- enter a natural number to know its properties;\n" +
                    "- enter 0 to exit.\n" +
                    "\n" +
                    "Enter a request:");
            int number = scanner.nextInt();
            
            if (number == 0)//  checks for the number to be zero or not.
            {
                break;      // jump statement, breaks out of the loop.
            }
            
            if (number > 0) {// if entered number is greater than zero, 
                System.out.println("Properties of " + number);
                System.out.println("\t even: " + (number % 2 == 0));
                System.out.println("\t odd: " + (number % 2 != 0));
                System.out.println("\t buzz: " + checkBuzzNumber(number));
                System.out.println("\t duck: " + checkDuckNumber(number));
                System.out.println("\t palindromic: " + checkPalindromicNumber(number));
                System.out.println();// for a new line
            } 
            else // if number is less than zero,
            {
                System.out.println("The first parameter should be a natural number or zero.\n");
            }
            
        }
        
        scanner.close();//good practice to close the scanner.
        
        
        //____________________________________________________________
    //    if (number >= 0) {
    //        System.out.println("Properties of " + number);
    //        System.out.println("\t even: " + (number % 2 == 0));
    //        System.out.println("\t odd: " + (number % 2 != 0));
    //        System.out.println("\t buzz: " + checkBuzzNumber(number));
    //        System.out.println("\t duck: " + checkDuckNumber(number));
    //        System.out.println("\t palindromic: " + checkPalindromicNumber(number));
    //    } else {
    //        System.out.println("The first parameter should be a natural number or zero.");
    //    }
    }
    
    public static boolean checkBuzzNumber(int number) {
        return number % 7 == 0 || String.valueOf(number).endsWith("7");
    }
    
    public static boolean checkDuckNumber(int number) {
        String num = String.valueOf(number);
        boolean flag = false;
        if (num.startsWith("0")) {
            return false;
        } else {
            for (int i = 1; i < num.length(); i++) {
                if (num.charAt(i) == '0') {
                    flag = true;
                    break;
                }
            }
            return flag;
        }
    }
    
    public static boolean checkPalindromicNumber(int number) {
        int rem, rev = 0, temp;
        temp = number;
        while (number != 0) {
            rem = number % 10;
            rev = rev * 10 + rem;
            number = number / 10;
        }
        if (temp == rev)
            return true;
        else
            return false;
    }
    
    }
    
     类似资料:
    • 出于某种原因,在下面的递归函数中, 永远不递增p,也就是说字符串s永远不是一个回文,尽管在我的程序中,s确实是一个回文,次数相当少。但是在下面一行中它仍然返回false 是因为功能吗?s采用的一些值为:aaa、aba、AAAA、abbb、bab 我已确保s中没有前后空格 P、 S:我已经检查过了,x==n 示例输入: 输出0。回文:aaaaaa、abaaba、aaaaaa

    • 我有一个函数,可以从文件列表中创建一个Zip文件。是否可以在不保存在磁盘上的情况下返回Zip文件?我需要这个文件,因为我必须使用zip文件作为另一个函数的参数。我不确定ByteStream是否适合我。 编辑:添加用例 其想法是创建一个zip文件,并使用Watson的VisualRecognition服务的CreateClassifications方法。 构建器接受zip文件作为参数。 理解 根据A

    • 问题内容: 我使用巨大的数据文件,有时我只需要知道这些文件中的行数,通常我会打开它们并逐行读取它们,直到到达文件末尾 我想知道是否有更聪明的方法可以做到这一点 问题答案: 这是我到目前为止找到的最快的版本,比readLines快6倍。在150MB的日志文件上,这需要0.35秒,而使用readLines()则需要2.40秒。只是为了好玩,Linux的wc -l命令需要0.15秒。 编辑,在9 1/2

    • 我试图创建一个名为“回文”的方法,该方法接收一个字符串,如果该字符串是回文,则返回布尔值true,否则返回false。如果一个单词向前和向后读都一样,那么它就是一个回文。比如level这个词就是一个回文。 例如,通过考虑通过删除所有空格和标点符号并将所有字母转换为小写形式获得的文本,将其转换为回文: 女士,我是亚当== 一个人,一个计划,一条运河:巴拿马== 我尝试处理我使用并输出作为替换all的

    • 本文向大家介绍PHP中的回文,包括了PHP中的回文的使用技巧和注意事项,需要的朋友参考一下 理查德·怀斯曼(Richard Wiseman)是一位心理学家,魔术师和作家,在http://richardwiseman.wordpress.com/上经营着一个小博客。他的博客谈论各种各样的事情,但是每个星期五他都会发布一个小难题,您可以尝试解决。 发布的最后一个难题谈到回文数和速度,这是完整的难题。

    • 我试图用递归得到一个字符串中最长的回文。以下是我的代码: 所以这段代码并不完全有效,我不知道如何解决它。这是我的解释: 假设输入字符串是:“i更喜欢”。 我检查它的方法是: 一个展示的图像 这个字符串中最长的回文是“refer”。 我将遍历我的代码: 句子被发送到回文函数。 这个if语句是为了检查字符串是否是回文。我不更改实际字符串,因为我想完全返回原始字符串。我替换所有空格并使其小写,并检查它是