什么可能导致我的结果打印出与他们应该相反的东西?

时间:2012-11-01 22:28:24

标签: java binary numbers base base-conversion

这是我为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碱基10在碱基9中为280

     

100碱基10在碱基2中是1100100

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

这是我得到的:

  

234 base 10在基础9中是082

     

100 base 10在base 2中是0010011

1 个答案:

答案 0 :(得分: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;
}