我是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);
我在做什么错了?
答案 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,并一直持续到数字为零为止。当然,您必须先捕获结束数字,然后再按除法将其丢失。
伪代码可能类似于:
然后将此通行号码称为零