2014-12-24 51 views
0

a是微調器的值。Java一直回覆不正確的答案

private void toolCalculateActionPerformed(java.awt.event.ActionEvent evt) { 
    Integer a = (int) toolSpinner.getValue(); 

    if (toolEnch.getSelectedIndex() == 0) { 
     double p; 
     p = (10^(2 - a) * 13^a); 
     double x = Math.round(p); 
     System.out.println(x); 
    } 
} 

我做10^(2-a) * 13^a,並且

可以說,微調爲1,則返回6,當它應該返回130

可以說,微調爲2,則返回8 ,當它應該返回169.

我已經用WolframAlpha對它進行了測試,它給了我正確的結果。然而,這個程序給了我一些啓發。 關於如何解決此問題的任何想法?

回答

7

^是異或,而不是指數。如果你想指數,使用Math.pow

p = Math.pow(10, (2-a)) * Math.pow(13, a); 
+0

啊,OK!我認爲^是指數。謝謝! – Efficiency

1

您的操作是錯誤的優先寫,^是異或不是戰俘,其實你必須使用parenthesis.because括號你的自我處理優先級的具有高優先級低於每個操作多。 使用數學類 變化p變線這樣的:

p = Math.pow(10, (2-a)) * Math.pow(13, a); // it will be 130.0 in double format when a is 1 

,如果你想計算什麼都喜歡XOR 您必須在大多數時候的你的自我處理periority的! 這樣的:

int a = 1; 
double p = 0; 
p = ((10 + (2-a)) * (13 + a)); 
System.out.println(p);; // this will be 154.0 in double format. 

但這:

int a = 1; 
double p = 0; 
p = (10 + (2-a) * (13 + a)); 
System.out.println(p); // will print 24.0 in double format.