1

这是一个家庭作业问题

如何使用 for 循环反转 Java 中的整数?用户将输入整数(我不知道它会有多长),我需要将它反转。即:如果他们输入 12345,我的程序将返回 54321。

这里有个问题,你不能在这个问题中使用 String、StringBuffer、数组或其他高级结构。

我对我需要做什么有一个基本的想法。我的问题是......在 for 循环中,条件不需要 x < 整数的长度(位数)吗?没有字符串我该怎么做?

感谢您的任何意见,如果需要,我会添加更多信息。

编辑:

当然,经过反省,我意识到我应该使用另一个 for 循环来做到这一点。我所做的是创建一个 for 循环,通过除以 10 来计算数字:

       int input = scan.nextInt();
        int n = input;
        int a = 0;

           for (int x = 0; n > 0; x++){
               n = n/10;
                a = a + 1;
            }

编辑2:

这就是我所拥有的

 int input = scan.nextInt();
        int n = input;
        int a = 0;
        int r = 0;
           for (int x = 0; n > 0; x++){
               n = n/10;
                a = a + 1;
            }
           for (int y = 0; y < n; y++) { 
                r = r + input%10;
                input = input/10;
            }
          System.out.println(input);

当我运行它时,它并没有反转它,它只是给我返回数字。即:如果我输入 1234,它会返回 1234。这对我来说没有任何意义,因为我将输入的最后一位数字添加到 r,那么为什么不是 4321?

4

5 回答 5

6

当您的原始数字非零时,将您的结果乘以 10,然后将原始数字除以 10 所得的余数相加。

例如,假设您的原始号码是 12345。从结果 0 开始。

  1. 将结果乘以 10 并加 5,得到 5。(原来的现在是 1234。)
  2. 将结果乘以 10 并加 4,得到 54。(原来是 123。)
  3. 将结果乘以 10 并加 3,得到 543。(原始 = 12。)
  4. 将结果 blah blah 5432 相乘。(原始 = 1。)
  5. 乘,加,bam。54321。而 1 / 10,在 int 数学中,为零。我们完成了。

如果您选择接受它,您的任务就是用 Java 实现它。:) (提示:Java 中除法和余数是分开的运算。%是余数运算符,/是除法运算符。分别取余数,然后将原来的除以 10。)

于 2013-03-11T22:17:41.527 回答
5

您将需要使用数学来访问每个数字。这里有一些提示可以帮助您入门:

使用%mod 运算符提取数字的最后一位。使用/除法运算符删除数字的最后一位。当号码中没有更多数字时停止循环。

于 2013-03-11T22:17:55.873 回答
0

这可能不是正确的方法,但是

   public static int reverseMe(int i){

    int output;
    String ri = i + "";

    char[] inputArray = ri.toCharArray();
    char[] outputArray = new char[inputArray.length];

    for(int m=0;m<inputArray.length;m++){
        outputArray[inputArray.length-m-1]=inputArray[m];
    }

    String result = new String(outputArray);
    output = Integer.parseInt(result);

    return output;
}
于 2013-03-12T00:46:45.053 回答
0
    public static void reverse2(int n){
    int a;


    for(int i = 0; i < n  ; i ++){
        a = n % 10;
        System.out.print(a);
        n = n / 10;


        if( n < 10){
            System.out.print(n);
            n = 0;
        }
        }

    }
于 2013-09-13T23:06:06.467 回答
0

这是更正代码的答案。

import static java.lang.Math.pow;
import java.util.*;
public class MyClass {
public static void main(String args[]) {
    Scanner scan=new Scanner(System.in);
    int input = scan.nextInt();
    int n = input;
    int a = 0;
    int r = 0;
       for (; n > 0;){
           n = n/10;
            a = a + 1;
        }
       for (int y = 0; y < input;a--) { 
            r =(int)( r + input%10*pow(10,a-1));
            input = input/10;
        }
      System.out.println(r);
}
}
于 2017-10-05T09:50:13.573 回答