使用方法反转用户输入数字

时间:2016-08-23 12:46:01

标签: java methods user-input reverse digit

我想获取1到9999之间的任何用户输入整数,并返回该数字,其数字反转。我的代码的问题是它返回输入的整数的总和,我不知道如何解决它。这是我到目前为止提出的代码:

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

    }
}

4 个答案:

答案 0 :(得分:3)

您可以替换:

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;
    }

答案 1 :(得分:2)

首先,将数字转换为字符串,然后反转字符串并将其重新转换为数字。

public static int reverseDigit(int num)
{
  String str;
  str = String.valueOf(num);
  str = new StringBuilder(str).reverse().toString();
  return (Integer.parseInt(str));
}

答案 2 :(得分:2)

public static int reverseDigit(int num) {
    int result = 0;
    while(num != 0 ) {
        result *=10;
        int temp = num % 10;
        result += temp;
        num /=10;
    }
    return result ;
}

答案 3 :(得分:1)

使用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;

}