我编写了代码,在单独的行上打印整数的数字,但是我没有得到预期的输出。相反,代码的输出顺序是相反的。在不使用Math.pow
方法的情况下,我如何使我的输出正确?
import java.util.Scanner;
class NumberInDigit
{
public static void main(String[] args)
{
int div;
Scanner sc = new Scanner(System.in);
System.out.println("enter the number");
int n = sc.nextInt();
while(n>0)
{
div = n%10;
n= n/10;
}
System.out.println(div);
}
}
n = 234
输出为4,3,2
预期输出为2,3,4
是模算子,所以div = n%10;
取n(234),然后求出234除以10的余数。234/10 = 23.4(即余数为4)。因此div被赋值为4(即div = 4)。然后将n(234)除以10并将其重新赋值为n -因此(234/10 = 23),注意余数被忽略。
这是循环第一次迭代的结束,它返回div = 4。
第二次迭代(当n = 23时)将输出3(因为23/10 = 2r3) -记住我们返回的是余数。然后将N设置为2。
第三次迭代(当n = 2时)将输出2(因为2/10 = 0r2) -余数为2。N现在被设置为0,即(2/10 = 0)。因此,下一次迭代将不满足N>
0。这就是为什么你得到4,3,2。
有很多方法可以得到期望的数字,但是因为你是在base10(即十进制系统)中工作,我认为最简单的方法是将数字转换成字符串,然后遍历字符串打印每个数字,直到你到达末尾,或小数点。
除法余数再除法余数,如果你想对字符串进行操作,请使用数组
你也可以这样做:
int n=234,x=n,y=100;
while(x>=0)
{
x=n/y;
n=n%y;
System.out.println(x);
y=y/10;
}
这样输出为2,3,4。
首先你的代码有语法和逻辑问题。"n"没有类型,它应该只返回4(因为你正在执行return,它不应该继续while循环)。
为了完成你需要的,你可以稍微修改一下你的代码:
public static void main(String [] args){
System.out.println(printReversedNumList(234));
}
private static List printReversedNumList(int num) {
final List<Integer> reversedNumList = new ArrayList<>();
while(num>0)
{
int remainder = num%10;
num= num/10;
reversedNumList.add(remainder);
}
Collections.reverse(reversedNumList);
return reversedNumList;
}