java - java中包含0的整数反转

标签 java int reverse long-integer

我必须编写一个程序,返回用户输入的数字的相反数字,如果数字以 0 开头和结尾(例如 00040,它将打印 04000)

我能够对数字进行相反的操作,但它不会打印出 0,而且我无法使用字符串变量,只能使用长变量或整数。

这是我的代码:

import java.util.Scanner;
public class Assignment_2_Question_2 {

        public static void main(String[] args) {
            Scanner keyboard = new Scanner (System.in);
            System.out.println("Welcome to Our Reversing Number Program");
            System.out.println("-----------------------------------------");
            System.out.println();

            System.out.println("Enter a number with at most 10 digits:");
            long number = keyboard.nextInt();

            long nbDigits = String.valueOf(number).length();

            System.out.println("Number of digits is " + nbDigits);

            System.out.print("Reverse of " + number + " is ");
            long revNumber = 0;
            while (number > 0){
                long digit = number % 10; 
                if (digit == 0){ // The teacher told me to add this
                    nb0 ++; // need to not take into account the 0's inside the number
                }
                revNumber = revNumber * 10 + digit;
                number = number/10;
            }
            for (int i = 0; i < nb0; i++) { // This will print the number of 0's counted by the if statement and print them out.
                  System.out.println("0");
            }       
            System.out.println(revNumber);
            String answer;

            do{
                System.out.println("Do you want to try another number? (yes to repeat, no to stop)");
                answer = keyboard.next();

                if (answer.equalsIgnoreCase("yes")){
                    System.out.println("Enter a number with at most 10 digits:");
                    long otherNumber = keyboard.nextInt();

                    long nbrDigits = String.valueOf(otherNumber).length();

                    System.out.println("Number of digits is " + nbrDigits);

                    System.out.print("Reverse of " + otherNumber + " is ");

                    long reversedNumber = 0;
                    while (otherNumber != 0){
                        reversedNumber = reversedNumber * 10 + otherNumber%10;
                        otherNumber = otherNumber/10;
                    }   
                    System.out.println(reversedNumber);
                }
                else
                    System.out.println("Thanks and have a great day!");
            }while(answer.equalsIgnoreCase("yes")&& !answer.equalsIgnoreCase("no"));
        }
    }

有人可以帮助我吗?谢谢

最佳答案

可能不是预期的结果,但显然(基于问题陈述)您必须看到输入的所有数字(包括前导 0),否则这是一个“不可能的解决方案” - 并且您声明您无法接收 String 形式的输入...

因此,此代码段一次读取一位数字,其中每个数字都作为 int 接收:

Scanner reader = new Scanner(System.in);
reader.useDelimiter("");  // empty string
System.out.print("Enter number: ");

while (!reader.hasNextInt()) reader.next();

int aDigit;
int cnt = 0;

while (reader.hasNextInt()) {

    aDigit = reader.nextInt();
    System.out.println("digit("+ ++cnt + ") "+aDigit);

}

System.out.println("Done");

打印(假设用户输入 012(回车)):

Enter number: digit(1) 0
digit(2) 1
digit(3) 2
Done

您自然有更多工作要做,但至少您已经输入了所有用户输入的数字(包括前导零)。

关于java - java中包含0的整数反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60195178/

相关文章:

Django 没有与参数的反向匹配

java - Heroku 查询,在 Heroku 上运行 Java 应用程序

java - 将用户输入的字符串转换为数字(int)值。

Objective-C 无法将 NSNumber 转换为 int

java - Java 中的数组按降序逆序排列

jQuery 如何反转remove() 事件

java - 在 32 位树莓派中将 Java 16 升级到 Java 17

java - 当获取 request.getParameter (""时,字符串无法转换为 ArrayList<String> )

java - SolrCore 初始化失败,有时会显示 "sorry, no dataimport-handler defined!",有时会抛出以下错误

python - Python中的整数到十六进制的转换