如何使用Java在单独的行上打印整数数字



我编写了代码,在单独的行上打印整数的数字,但是我没有得到预期的输出。相反,代码的输出顺序是相反的。在不使用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;
}

最新更新