2014-10-04 46 views
0

這裏是我的代碼:我二進制轉換器不知何故這麼想的工作

import java.util.*; 
public class binary{ 

public static void main(String args[]) 
{ 
    //input thing 
    Scanner read = new Scanner(System.in); 
    //variables 
    String result = ""; 
    int input; 
    //input 
    input =read.nextInt(); 
    toBinary(input,result); 
    System.out.println("Your binary is" + result); 

} 
public static String toBinary(int a,String b){ 
    StringBuilder sb = new StringBuilder(); 
    int y; 
    int z=2; 
    while(a >= 1){ 
     y = a%2; 
     a/=z; 
     sb.append(y); 

    } 
    b = sb.toString(); 
    invert(b); 
    return b; 
} 
public static String invert(String s) { 
     String temp = ""; 
     for (int i = s.length() - 1; i >= 0; i--) 
      temp += s.charAt(i); 
     return temp; 
    } 
} 

你能不能幫我什麼是錯,導致回報是空白。當我輸入一個數字時,它會顯示爲「你的二進制文件」。

回答

0

你的主要問題是你沒有存儲你的方法的返回值。 toBinary(input,result);返回轉換的結果,但不會將其存儲到任何變量。寫result = toBinary(input,result);來解決這個問題。

這同樣適用於您的invert呼叫。寫入b = invert(b);以保存b的倒數值。或者寫return invert(b);立即返回。

只是爲了確保:行b = sb.toString();不會更改作爲方法參數傳遞的變量result。你正在寫一個新的對象引用到變量。內存中的舊對象保持不變。此外變量result仍然引用舊對象。

+0

到底什麼是變量的新對象引用。我只做了10天的Java ... – DarkWyvren 2014-10-05 01:13:22

+0

@DarkWyvren有關對象和對它們的引用的更多信息,請參閱以下鏈接:http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-傳遞值 - http://docs.oracle.com/javase/tutorial/java/javaOO/usingobject.html - http://www.c4learn.com/java/java-assigning-object-reference/ - http :?//www.kdgregory.com/頁= java.refobj – Tom 2014-10-05 08:39:01

相關問題