1

这是我为 while/do-while 循环设置的最后一个实验室,除了我的结果打印出来的结果与它应该是什么完全相反之外,我已经弄清楚了。

public class TenToAny
{
private int base10;
private int newBase;

public TenToAny()
{

}

public TenToAny(int ten, int base)
{
   base10 = ten;
   newBase = base;
}

public void setNums(int ten, int base)
{
   base10 = ten;
   newBase = base;
}
public String getNewNum()
{
    String newNum="";
    int orig = base10;

    while(orig > 0)
    {
        newNum = orig%newBase + newNum;
        orig = orig/newBase;
    }
    return newNum;
}

public String toString()
{
    String complete = base10 + " base 10 is " + getNewNum() + " in base " + newBase;

    return complete;
}


}

这就是我的结果应该是:

234 base 10 是 280 in base 9

100 base 10 是 1100100 in base 2

这些是前两个值的预期结果(基数为 9 的 234 和二进制的 100)

这是我得到的:

234 base 10 是 082 in base 9

100 基数 10 是基数 2 中的 0010011

4

1 回答 1

0

您只是添加结尾newNum而不是前置。

newNum = newNum + orig%newBase;

... 应该 ...

newNum = orig%newBase + newNum;

对于人物...

orig%newBase > 9, 那么char(55 + orig%newBase)

var nextValue = orig % newBase;

if (nextValue > 9)
{
    newNum = char(55 + nextValue) + newNum;
}
else
{
    newNum = nextValue + newNum;
}
于 2012-11-01T22:32:17.867 回答