使用方法反转用户输入的数字
Reversing a user input digit using methods
我想将 1 到 9999 之间的任何用户输入整数和 return 该数字的数字颠倒过来。我的代码的问题是它 returning 输入整数的总和,我不知道如何解决它。这是我到目前为止想出的代码:
import java.util.Scanner;
class Reverse{
public static void main(String []args){
Scanner input = new Scanner(System.in);
System.out.print("Enter a number between 1 and 9999: ");
int user = input.nextInt();
if(user>1 && user<9999){
System.out.println("The number with its digits reversed is : " + reverseDigit(user));
}else{
System.out.println("Invalid Input");
}
}
public static int reverseDigit(int num){
return (num%10 + (num%100)/10 + (num%1000)/100 + num/1000); //This is the problem
}
}
先把数字转成字符串,再把字符串反转,转成数字。
public static int reverseDigit(int num)
{
String str;
str = String.valueOf(num);
str = new StringBuilder(str).reverse().toString();
return (Integer.parseInt(str));
}
您可以替换:
return (num%10 + (num%100)/10 + (num%1000)/100 + num/1000);
与:
return ((num%10)*1000 + ((num%100)/10 )*100+ ((num%1000)/100)*10 + num/1000);
第一个错误的原因是因为你得到:
last digit:num%10
third digit:num%100)/10
second digit:(num%1000)/100
first digit:num/1000
所以你只是将之前的所有数字相加
但以上仅适用于 1000-9999 之间的数字。因此您可以使用适用于每个数字的简单方法替换 reverseDigit 方法:
public static int reverseDigit(int num){
int reverse=0;
while( num != 0 )
{
reverse = reverse * 10;
reverse = reverse + num%10;
num = num/10;
}
return reverse;
}
使用 int
来完成(尽管 String
会更好)。
public void test() {
System.out.println("Reversed: " + 1234 + " = " + reverseDigits(1234, 4));
}
public static int reverseDigits(int num, int digits) {
int reversed = 0;
for (int i = 0; i < digits; i++) {
reversed *= 10;
reversed += num % 10;
num /= 10;
}
return reversed;
}
public static int reverseDigit(int num) {
int result = 0;
while(num != 0 ) {
result *=10;
int temp = num % 10;
result += temp;
num /=10;
}
return result ;
}
我想将 1 到 9999 之间的任何用户输入整数和 return 该数字的数字颠倒过来。我的代码的问题是它 returning 输入整数的总和,我不知道如何解决它。这是我到目前为止想出的代码:
import java.util.Scanner;
class Reverse{
public static void main(String []args){
Scanner input = new Scanner(System.in);
System.out.print("Enter a number between 1 and 9999: ");
int user = input.nextInt();
if(user>1 && user<9999){
System.out.println("The number with its digits reversed is : " + reverseDigit(user));
}else{
System.out.println("Invalid Input");
}
}
public static int reverseDigit(int num){
return (num%10 + (num%100)/10 + (num%1000)/100 + num/1000); //This is the problem
}
}
先把数字转成字符串,再把字符串反转,转成数字。
public static int reverseDigit(int num)
{
String str;
str = String.valueOf(num);
str = new StringBuilder(str).reverse().toString();
return (Integer.parseInt(str));
}
您可以替换:
return (num%10 + (num%100)/10 + (num%1000)/100 + num/1000);
与:
return ((num%10)*1000 + ((num%100)/10 )*100+ ((num%1000)/100)*10 + num/1000);
第一个错误的原因是因为你得到:
last digit:num%10
third digit:num%100)/10
second digit:(num%1000)/100
first digit:num/1000
所以你只是将之前的所有数字相加
但以上仅适用于 1000-9999 之间的数字。因此您可以使用适用于每个数字的简单方法替换 reverseDigit 方法:
public static int reverseDigit(int num){
int reverse=0;
while( num != 0 )
{
reverse = reverse * 10;
reverse = reverse + num%10;
num = num/10;
}
return reverse;
}
使用 int
来完成(尽管 String
会更好)。
public void test() {
System.out.println("Reversed: " + 1234 + " = " + reverseDigits(1234, 4));
}
public static int reverseDigits(int num, int digits) {
int reversed = 0;
for (int i = 0; i < digits; i++) {
reversed *= 10;
reversed += num % 10;
num /= 10;
}
return reversed;
}
public static int reverseDigit(int num) {
int result = 0;
while(num != 0 ) {
result *=10;
int temp = num % 10;
result += temp;
num /=10;
}
return result ;
}