2015-01-05 29 views
0

我試圖創建這個程序,實質上解決了直角三角形的第三個值。使用畢達哥拉斯定理與Java

所以斜邊將始終是1,且其中一個值(允許稱之爲「X」)將大於或等於-1而小於或等於1。

首先,我創建一個循環爲包括x的所有值:

int i = 10; 

    while (i >= -10) 
    { 
     double x = i/10.0; 
     i--; 

     System.out.println(x); 

    } 

現在,我得到一個不錯的名單,讓我的價值觀對於x。我現在需要用它來計算三角形第三長度的值。我可以用畢達哥拉斯定理來做到這一點。那就是:

double firsty = Math.pow(1, 2) - Math.pow(x, 2); 
double y = Math.sqrt(firsty); 

當我把這個while循環,然後寫爲Y,結果在列出x的第一個值,那麼y的第一個值的方式格式化打印語句,然後是x的第二個值,然後是y的第二個值。如何更改格式以使其只有兩個單獨的行,一列的值爲x,另一列的值爲y?

我最初嘗試做的是使用一個數組來保存x的值,但是我無法通過使用數組來計算第三長度的值,而不會讓編譯器對我喊'錯誤'!

使用printf函數是需要做的事情(很確定),但是當我使用printf輸出x和y時,出現錯誤信息。

+0

是你期待什麼樣的價值觀來查看'y'?你究竟得到了什麼樣的價值? –

+0

不要忘記採取'y'的平方根。 –

+0

好吧,我覺得自己像一個白癡,不能將它平方根紮根。現在這些值是正確的,但格式是錯誤的。下面是輸出:1.0 0.0 0.9 0.4358 0.8 0.599 0.7 0.714 0.6 0.8 0.5 0.86 0.4 0.916 0.3 0.953 0.2 0.979 0.1 0.99 0.0 1.0 -0.1 0.9949 -0.2 0.97972 -0.3 0.953 -0.4 0.9165 -0.5 0.866 -0.6 0.8 -0.7 0.714 -0.8 0.599 -0.9 0。435 -1.0 0.0 – Kush

回答

1

根據你的問題,你似乎忘記了y的平方根。畢達哥拉斯公式是c = a + b 。所以,我認爲你正在尋找

double y = Math.sqrt(Math.pow(1, 2) - Math.pow(x, 2)); 

,並對其進行格式化,你可以使用一個DecimalFormatString.format

String str = String.format("%.2f", y); // <-- 2 decimal places. 
+0

好吧,我解決了平方根問題。謝謝!但使用String.format仍然使格式看起來不正確。現在,它會打印一個數字列表,從x的第一個值開始,然後是y的第一個值,然後是x的第二個值,然後是y的第二個值。我試圖使它在一列中顯示x的所有值,並在不同列中顯示y的所有值。我嘗試過使用DecimalFormat,但它仍然沒有幫助。 – Kush

+0

以您想要換行的格式包含一個換行符(\ n)。 – ganbustein

+0

向我們展示如何打印它,因爲英語沒有充分描述它(並且顯示輸出結果並沒有真正幫助)。 –

相關問題