【问题标题】:Inputting a number then reversing it输入一个数字然后反转它
【发布时间】:2012-07-11 01:25:57
【问题描述】:

好的,所以我编写了一个程序,要求用户输入一个数字,然后将其反转。我成功了,但是程序不会反转以 0 结尾的数字。例如,如果我输入 1234,它将打印出 4321,但是如果我输入 1200,它只会输出 21。我尝试转换要成为输出的数字成字符串。请帮助我了解我在哪里做错了。请记住我是这方面的初学者:)。下面是我的代码。

import java.util.*;
public class ReverseNumber
{
    public static void main (String [] args)
    {
        Scanner n = new Scanner(System.in);
        int num;
        System.out.println("Please enter the number");
        num = n.nextInt();
        int temp = 0;
        int reverse = 0;
        String str = "";
        System.out.println("The number before getting reversed " + num);
        while (num != 0)
        {
            temp = num % 10;
            reverse = reverse*10 + temp;
            num = num/10;
            str = Integer.toString(reverse);
        }
        //String str = Integer.toString(reverse);
        System.out.println("The reversed number is " + str);
    }
}

【问题讨论】:

  • 哦,哇,谢谢你,jacobm,我终于明白我在那里做错了什么。非常感谢您的帮助。

标签: java string numbers reverse


【解决方案1】:

您将反转的数字存储为 int。 1200 的倒数是 0021,但这只是 21 作为 int。您可以通过将每个数字分别转换为字符串来修复它。

【讨论】:

    【解决方案2】:

    问题是您将反转的值计算为数字,当涉及到数字时,0021 和 21 之间没有区别。您想要的是直接打印出反转的值将其反转或将其构建为字符串,然后将其打印出来。

    前一种方法是这样的:

    System.out.print("The reversed number is ");
    while (num != 0)
    {
        System.out.print(num % 10);
        num = num / 10;
    }
    System.out.println();
    

    后一种方法是这样的:

    String reverse = "";
    while (num != 0)
    {
        reverse = reverse + Integer.toString(reverse);
        num = num / 10;
    }
    System.out.println("The reversed number is " + reverse);
    

    如果您需要对反向值进行进一步处理,后一种方法很有用。但是,由于超出此问题范围的原因,它不是最理想的。如果您研究何时最好使用StringBuilder 而不是字符串连接,您可以获得更多信息。

    【讨论】:

      【解决方案3】:

      我实际上发现这种方式非常有趣,因为这不是我通常会反转的方式。只是想提供另一种可以反转它的方式,或者在这种情况下,反转任何字符串。

      public static void main()
      {
          Scanner n = new Scanner(System.in);
          System.out.print("Please enter the number:");
          int num = n.nextInt();
          System.out.println("The number before getting reversed is " + num);
      
          String sNum = Integer.toString(num);
          String sNumFinal = "";
          for(int i = sNum.length()-1; i >= 0; i--)
          {
              sNumFinal += sNum.charAt(i);
          }
          System.out.print("The reversed number is " + sNumFinal);
      }
      

      如果你想更进一步,这样你可以输入“00234”并让它输出“43200”(否则它会去掉前导零),你可以这样做:

      public static void main()
          {
              Scanner n = new Scanner(System.in);
              System.out.print("Please enter the number:");
              String num = n.next(); // Make it recieve a String instead of int--the only problem being that the user can enter characters and it will accept them.
              System.out.println("The number before getting reversed is " + num);
      
              //String sNum = Integer.toString(num);
              String sNumFinal = "";
              for(int i = num.length()-1; i >= 0; i--)
              {
                  sNumFinal += num.charAt(i);
              }
              System.out.print("The reversed number is " + sNumFinal);
          }
      

      当然,如果你想要它作为 int,只需执行 Integer.parseInt(sNumFinal);

      【讨论】:

        【解决方案4】:

        去除两个零的原因是因为将 temp 和 reverse 变量声明为整数。

        如果您将值分配给左侧为零的整数,例如 000001 或 002,它将被删除,并在我的示例中变为 1 或 2。

        因此,在您的示例中,1200 变成了 0021,但是由于您声明的变量是整数,它只变成了 21。

        【讨论】:

          【解决方案5】:
           import java.util.Scanner;
          
          
           public class Reverse {
            public static void main(String args[]){
          
              int input,output=0;
              Scanner in=new Scanner(System.in);
              System.out.println("Enter a number for check.");
              input=in.nextInt();
          
              while (input!=0)
              {
              output=output*10;
              output=output+input%10;
              input=input/10;
              }
              System.out.println(output);
              in.close();
          }
          

          }

          【讨论】:

          • 请不要只发布代码而不告诉我们我们在看什么。
          猜你喜欢
          • 1970-01-01
          • 2021-01-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-01-30
          • 1970-01-01
          相关资源
          最近更新 更多