问题是要反转用户输入的数字。我有它的工作,但在测试它时,我意识到它不会打印前导零或尾随零。
例如,如果我输入10,则结果中只显示1。
如果我输入0110,我会得到11的结果。
这是我的代码:
public class ReversingDigits {
int value;
int reverse;
public ReversingDigits() {
value = 10;
reverse = 0;
}// end constructor
public void reverse() {
System.out.println("Enter a valid 2-4 digit number: ");
Scanner input = new Scanner(System.in);
value = input.nextInt();
if (value < 10 || value > 9999){
System.out.print("Please enter a valid 2-4 digit number: ");
value = input.nextInt();
}
while (value > 0) {
reverse *= 10;
reverse += value % 10;
value /= 10;
}
System.out.println("Reversed numbers are: " + reverse);
}
}//end class
关于如何打印零的任何想法?
由于
答案 0 :(得分:2)
确保在翻转号码时使用字符串。它将保留前导零。如您所知,00001与int
表示中的1相同,因此将其转换为字符串将删除所有前导零。
这里修改了代码示例,以便从输入中读取字符串,并在需要检查范围时将其转换为int。
public void reverse() {
System.out.println("Enter a valid 2-4 digit number: ");
Scanner input = new Scanner(System.in);
String value = input.next();
int valueInt = Integer.parseInt(value);
if (valueInt < 10 || valueInt > 9999){
System.out.print("Please enter a valid 2-4 digit number: ")
value = input.next();
}
String valueReversed = new StringBuilder(value).reverse().toString();
System.out.println("Reversed numbers are: " + valueReversed);
}
请注意,在您的代码中,如果用户连续两次输入错误的范围,您的程序将不会再次提示他。您可能希望将此部分代码放入do-while
循环中,该循环仅在输入范围正确时退出。实施例
do {
System.out.print("Please enter a valid 2-4 digit number: ")
value = input.next();
int valueInt = Integer.parseInt(value);
} while (valueInt < 10 || valueInt > 9999);
//only get here when inputted value finally within target range.
编辑如@Levenal所述,如果用户传入,您可能还希望将Integer.parseInt
包裹在try/catch
NumberFormatException
块中非数字输入。
答案 1 :(得分:0)
正如已经指出的那样,逆转数字你会更好地逆转一个字符串。如果你被允许偏离控制台输入,那么JOptionPane非常适合简单的String输入,如下所示:
while(true){
String input = JOptionPane.showInputDialog("Please anter a number between 10 & 9999: ");
if(input == null){//If input cancelled
break; //Exit loop
} else if(input.matches("\\d{2,4}")){//Regex for at least 2 but no more than 4 numbers
System.out.println(new StringBuilder(input).reverse().toString());//Reverse
break;
}
}
祝你好运!