2015-12-07 116 views
0

我正在嘗試爲android做一個轉換應用程序,它是一項作業。我在執行算法時遇到了問題,當函數被調用時,我的應用程序崩潰。通過替換方法進行轉換

這是我的皈依類:

public class Conversion { 

private Double transform(Double number, Double base) { 
    Double converted = (number/base) * 10 + (number % base); 
    return converted; 
} 

public String substitution(String number, String base) { 
    Double temp_number = Double.parseDouble(number); 
    Double converted_number = 0.0; 
    Double i = 0.0; 
    while (temp_number != 0) { 
     converted_number = converted_number * 10 + transform((temp_number % 10) * Math.pow(Double.parseDouble(base), i), Double.parseDouble(base)); 
     temp_number = temp_number/10; 
     i = i + 1; 
    } 
    return converted_number.toString(); 
}} 

因此,例如,當我調用函數應用程序啓動時,它崩潰。

public class MainActivity extends AppCompatActivity { 

Conversion conver = new Conversion(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    final Context c = this; 
    AlertDialog.Builder m = new AlertDialog.Builder(c); 
    m.setMessage(conver.substitution("10", "10")); 
    AlertDialog a = m.create(); 
    a.show(); 

編輯:我解決了死機的問題,現在我的函數返回「南」

回答

0

我弄清楚,該算法不工作因爲while循環只有在雙值達到他的最低點時纔會停止。所以我解決了它與Math.floor()

0

你在你的代碼Double.parseDouble("base"),除去雙引號

+0

我刪除了雙引號,現在當我調用'conver.substituion(「10,」10「)'它返回我」NaN「 –