【问题标题】:Reverse integer including 0's in javajava中包含0的反转整数
【发布时间】:2020-02-12 18:58:20
【问题描述】:

我必须做一个程序,返回用户输入的数字的反转,事件以 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"));
        }
    }

有人可以帮助我吗?谢谢

【问题讨论】:

  • 您已经在使用Scanner 变量和String 变量。为什么你不能将号码也存储在String 中,至少在你数完位数之前是暂时的?
  • @thatotherguy 我知道使用字符串会起作用,但这是我必须做的作业,老师不希望我们使用字符串变量
  • 你要在提交之前删除String answer;吗?
  • 不,字符串 answer 变量没有返回整数,我使用它来让用户输入他继续使用反向程序的决定
  • 您确定不能将用户对“输入数字:”的答案存储在字符串中以获取其长度,只要您只使用整数运算来反转您的数字吗?

标签: java int reverse long-integer


【解决方案1】:

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

所以这个 sn-p 每次读取一个数字,每个数字都作为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

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

【讨论】:

    【解决方案2】:

    您可以使用缓冲区阅读器; 就像这个给定的代码如果你想对数字做一些算术运算,那么你可以使用 parseInt 方法将其转换为 int。:-

    import java.util.Scanner;
    import java.lang.*;
    class Main {
     public static void main(String args[])
    {
    System.out.println("ENTER NUM");
    Scanner SC = new Scanner(System.in);
    String INP = SC.nextLine();
    StringBuffer SB = new StringBuffer(INP);
    SB.reverse() ;
    System.out.println(SB);
    
    
    }
    }
    
    

    【讨论】:

      猜你喜欢
      • 2021-05-01
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-24
      • 2011-01-25
      相关资源
      最近更新 更多