我必须编写一个程序,返回用户输入的数字的相反数字,如果数字以 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/