我想编写一个程序来反转在数组中输入的所有整数

时间:2016-08-04 03:41:47

标签: java

我想编写一个程序来反转在数组中输入的所有整数但是我在这里显示的代码没有正常工作。这是我的代码:

import java.util.*;
import java.lang.*;
import java.io.*;

class GFG {
    public static void main (String[] args) throws Exception {
        //code
          Scanner ss=new Scanner(System.in);
       int[] arr = new int[31];
       int T=ss.nextInt();
       int rem,p=0;

       for(int i=1;i<=T;i++){
           int a=ss.nextInt();
           if(a<=1000000000){
              while(a!=0){
                  rem=a%10;
                  p=p*10+rem;
                  a=a/10;                     
             }
           System.out.println(p);
         } else
           System.out.println("wrong input");
       }
    }
}

输入

2
56
78

预期产出:

65
87

实际输出:

65
6578

有什么问题?

3 个答案:

答案 0 :(得分:0)

可能的解决方案可能是

if(a<=1000000000){
               p=0; // reinitialize p
              while(a!=0){
                  rem=a%10;
                  p=p*10+rem;
                  a=a/10;

              }

为了更好地理解,只需添加以下行System.out.println("P is :"+ p);,您就会明白为什么需要p=0;

if(a<=1000000000){
               System.out.println("P is :"+ p);
              while(a!=0){
                  rem=a%10;
                  p=p*10+rem;
                  a=a/10;
}

输出:

2
65
P is :0
56
78
P is :56
5687

答案 1 :(得分:0)

可能你只是在学习如何做事;因此,你想要解决这个问题&#34;数学和#34;,但这里有一个不同的视角。

您似乎只想反转任意数字内的数字;你把它视为数学问题。但人们可以将其视为字符串操作问题;它允许您使用现有的功能来解决问题:

int originalNumber = ....
String originalNumberAsString = Integer.toString(originalNumber);
String reversedNumberAsString = new StringBuilder(originalNumberAsString).reverse().toString();
int reversedNumber = Integer.parseInt(reversedNumberAsString);

请注意:此处无需检查输入的大小;但你可能应该检查&gt; = 0(或者在你的情况下为负数做适当的事情)。

答案 2 :(得分:0)

如果由同行审核,您的代码中存在几个错误(可以说是)。您正在尝试打印未重新初始化的p。在这个答案中删除了代码中很多未使用的变量。

  • 您刚刚声明了一个数组,但从未在您的程序中使用过。不确定是否要将用户输入存储在数组中,一旦收到所有输入,您可能需要计算反向并显示或计算反向并直接将它们存储在数组中。所以,我刚把它删除了
  • 我认为支票a <= 1000000000是为了确保输入的值在int范围内。 Java在Integer包装器类Integer.MAX_VALUE2^31 - 1
  • 中为您提供了常量
  • 代码缺少modularity。因此,我将其提取到负责计算的方法reverse(int num)
  • 从包中导入所有类是not recommended,而只导入代码中使用的那些类。

    import java.util.Scanner;

    公共类GFG {

    public static void main(String[] args) throws Exception {
        Scanner ss = new Scanner(System.in);
        int T = ss.nextInt();
    
        for (int i = 1; i <= T; i++) {
            int a = ss.nextInt();
    
            if (a <= Integer.MAX_VALUE) {
                a = reverse(a);
                System.out.println(a);
            } else {
                System.out.println("wrong input");
            }
        }
    }
    
    private static int reverse(int num) {
        int reverse = 0;
        while( num != 0 ) {
            reverse = reverse * 10;
            reverse = reverse + num % 10;
            num = num/10;
        }
        return reverse;
    }
    

    }

另外,如果你看看GhostCat将数字转换为String并将其反转的答案,那么负数的方法就会失败。

示例:当用户输入为 -51 时,输出为 15 -

但是,行业中通常会将某些long值存储为String。一个这样的例子是信用卡/借记卡号