Java 使用模数运算符时如何保存新数字?

Java 使用模数运算符时如何保存新数字?,java,Java,我正在写一个程序,它取一个数字/2,然后打印余数,然后继续,直到数字为0 示例13/2余数=1 6/2余数=0 3/2余数=1 1/2余数=1 这是我写的。我尝试了一些不同的代码,但它只是导致了一个无限循环。这似乎是编译,但它只返回输入的原始数字 public class BinaryDigits { int number; int quotient; int remainder; public BinaryDigits(int input) {

我正在写一个程序,它取一个数字/2,然后打印余数,然后继续,直到数字为0

示例13/2余数=1 6/2余数=0 3/2余数=1 1/2余数=1

这是我写的。我尝试了一些不同的代码,但它只是导致了一个无限循环。这似乎是编译,但它只返回输入的原始数字

public class BinaryDigits
{
    int number;
    int quotient;
    int remainder;

    public BinaryDigits(int input)
    {   
        number = input;
    }


    public int getDigits()
    {
        while (quotient > 0)
        {
            quotient = number / 2;
            remainder = number % 2;
            System.out.println(remainder);
        }
        return number;
    }


}

问题:

while (quotient > 0)
int number = 13;
    int remainder;
    while (number != 0)
    {
        remainder = number % 2;
        System.out.println(remainder);
        number = number / 2;
    }
1
0
1
1
它将始终是
number/2
,并且不会减少或增加,从而导致无限循环

解决方案:

while (quotient > 0)
int number = 13;
    int remainder;
    while (number != 0)
    {
        remainder = number % 2;
        System.out.println(remainder);
        number = number / 2;
    }
1
0
1
1
您需要计算除以的
数字
,并将其再次赋给
数字
变量,这样当它达到0时,它将中断while循环

结果:

while (quotient > 0)
int number = 13;
    int remainder;
    while (number != 0)
    {
        remainder = number % 2;
        System.out.println(remainder);
        number = number / 2;
    }
1
0
1
1

好吧,我知道了。谢谢

public class BinaryDigits
{
    int number;
    int quotient;
    int remainder;

    public BinaryDigits(int input)
    {   
        number = input;
    }


    public int getDigits()
    {
        while (number > 0)
        {
            remainder = number % 2;
            System.out.println(remainder);
            number = number / 2;
        }
        return number;
    }


}

您想将数字除以2,然后打印余数。您确定数字不变吗?或者它只是到了1并且
1%2
总是1,所以它被卡在这里了?谢谢,我一定是在你之前发布的