反转整数

时间:2019-03-20 23:49:17

标签: java

我是Java初学者,所以如果问题看起来很傻,请原谅我,但是我已经搜索了论坛,但似乎没有人遇到我的问题。

我需要反转整数,并且我的课程还没有涉及while或if循环,因此我不能使用它们。我可以在stackoverflow上找到的所有答案都使用了这些答案,所以我不能使用它们。

我得到的输入小于10000且大于0,如果输入为4位数字(例如1000-9999),则我编写的代码将整数取反没有问题,但是一旦输入介于1-999之间,它将创建零在右边,但根据答题纸是错误的。

例如:1534变成4351,但是 403变成3040,而不是304,而4变成4000而不是4。

我在代码中尝试了不同的方法,但似乎总是给出相同的答案。也许我不确定,我不确定一些关键数学。

Scanner scan = new Scanner(System.in);
System.out.println ("Enter an integer:");

int value = scan.nextInt();    
int digit = (value % 10); 
value = (value / 10); 
int digit2 = (value % 10); 
value = (value / 10); 
int digit3 = (value % 10); 
value = (value / 10); 
int digit4 = (value % 10); 
String reversednum = ("" + digit + digit2 + digit3 + digit4);
System.out.println ( reversednum);

 Scanner scan = new Scanner(System.in);
 System.out.println ("Enter an integer:");

int value = scan.nextInt();
int digit = (value % 10);  
int reversednum = (digit);
value = (value /10); 
digit = (value % 10); 
reversednum = (reversednum * 10 + digit); 
value = (value / 10); 
digit = (value % 10); 
reversednum = (reversednum * 10 + digit); 
value = (value / 10); 
digit = (value); 
reversednum = (reversednum * 10 + digit); 
System.out.println (reversednum);

我在做什么错了?

4 个答案:

答案 0 :(得分:1)

您可以从int转换为String->反向String->在int中再次转换。 这是一个代码示例。

public int getReverseInt(int value) {
    String revertedStr = new StringBuilder(value).reverse().toString();
    return Integer.parseInt(revertedStr);   
}

答案 1 :(得分:0)

您的代码假定该数字可以除以1000,而小于1000的数字显然不是这种情况。因此,添加一些returned=requests.post(triggers,data=post_array,files={'images':[url for url in files_array requests.get(url).content]}).text pprint(returned) 语句:

if

答案 2 :(得分:0)

使用模数和除法:

  int nbr = 123;  // reverse to 321 or 3*10*10 + 2*10 + 1
  int rev = 0;
  while(nbr > 0) {
     rev *= 10;             //  shift left 1 digit
     int temp = nbr % 10;  // get LO digit
     rev += temp;    // add in next digit
     nbr /= 10;    // move to next digit
  }

或递归方法:

   public static int reverseInt(int number, int value) {
      switch(number) {         // is this conditional statement allowed???
         case 0:
            return value;
      }
      value *= 10;
      int lod = number % 10;
      value += lod;
      number /= 10;
      return reverseInt(number, value);
   }

答案 3 :(得分:0)

无需大量输入代码即可(保留编写自己的家庭作业代码的价值)...

尽管您已经说过不能使用循环,但我认为没有一种不使用循环的明智方法。您的基本问题是,您已经硬编码了一个解决方案,该解决方案在数字恰好有4位数字时起作用,而不是使用适应于可变长度的代码。即不使用循环。

但是,您的代码不会全部丢失。您已经了解了解决方案的实质。您只需要将其转换为一次可处理一位数字的工作即可。考虑使用递归,该递归每次将数字除以10,并一直持续到数字为零为止。当然,您必须先捕获结束数字,然后再按除法将其丢失。

伪代码可能类似于:

  • 输入数字和当前结果
  • 如果数字为0,则返回结果
  • 将结果乘以10,然后将数字的余数除以10
  • 返回用数字除以10并求结果的self的结果

然后将此通行号码称为零