Обратное целое число, включая 0 в java - PullRequest
0 голосов
/ 12 февраля 2020

Мне нужно сделать программу, которая возвращает обратное число, введенное пользователем, события, которые начинаются и заканчиваются sh с 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"));
        }
    }

Может кто-нибудь мне помочь? Спасибо

1 Ответ

0 голосов
/ 13 февраля 2020

Вероятно, не то, что предназначено, но ясно (основываясь на формулировке проблемы), вы должны увидеть все введенные цифры (включая начальные 0), в противном случае это «невозможное решение» - и вы заявляете, что не можете получить ввод как String. ..

Таким образом, этот фрагмент читает по одному di git за раз, когда каждый di git принимается как 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

Естественно, у вас больше работы с этим, но по крайней мере у вас есть все введенные пользователем цифры (включая начальные нули).

...