2012-11-01 66 views
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 is 280 in base 9

100 base 10 is 1100100 in base 2

這些都爲前兩個值的預期結果(在基地9 234和100二進制)

這裏是什麼我得到:

234 base 10 is 082 in base 9

100 base 10 is 0010011 in base 2

回答

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; 
} 
+0

語法再次讓我.... 。 謝謝! –

+0

「250基地10是FA基地16」是預期的答案之一.... 我將如何去獲取此代碼的字母?在做數字基礎時,我從來不必處理字母 –

+0

@ tech_geek23:更新了答案。此外,基2,8,10,16:[Convert.ToString](http://msdn.microsoft.com/en-us/library/14kwkz77.aspx) –

相關問題