2014-10-30 40 views
0

它應該計算y軸,然後每次在不同位置繪製一個小線段並創建保齡球球的輪廓。 x值永遠不會改變,所以它不會繪製任何東西。黑色圓圈就在那裏,以確保它實際上是繪畫。StdDraw.line()loop-用於創建保齡球杆的輪廓

import java.util.Scanner; 
 
public class test{ 
 
    public static void main(String args[]) 
 
    { 
 
    double a0 = 1.27731344; 
 
    double a1 = .85418707; 
 
    double a2 = .032282353; 
 
    double a3 = .127018447; 
 
    double a4 = (-5.1957538)*(Math.pow(10,-2)); 
 
    double a5 = (6.718114)*(Math.pow(10,-3)); 
 
    double a6 = (-3.61828)*(Math.pow(10,-4)); 
 
    double a7 = (7.025)*(Math.pow(10,-6)); 
 
    
 
    for(int i=0;i<=150;i++){ 
 
     for(double x=0;x<=1;x+=(1/150)){ 
 
     double x2 = x + (1/150); 
 
     double y = Math.sqrt((a0)+(a1*x)+(a2*x)+(a3*x)+(a4*x)+(a5*x)+(a6*x)+(a7*x)); 
 
     StdDraw.line(x,y,x2,y); 
 
     System.out.println(x+" "+y+" "+x2); 
 
     } 
 
     
 
    }StdDraw.filledCircle(.5,.5,.25); 
 
} 
 
}

回答

0

線:for(double x = 0; x <= 1; x += (1/150))迭代從0.0開始,在1.0結束,並且每次迭代之後,加入0.0至x。

要通過1/150增加x,你必須改變1/150爲double值1.0/150

所以for循環改爲for(double x = 0; x <= 1; x += (1.0/150))

迭代雙打,不過,是因爲如何浮點非常不好的做法點數可能會表現出來。例如下面的代碼:

double var = 1.7; 
var -= 0.1; 
System.out.println(var); 

可能會打印一些像1.6000007。在另一篇文章中閱讀更多關於here

你應該找到另一種計算你的計算方法。底線是;總是迭代非浮點數。

+0

非常感謝,幫助了很多,我必須爲這項任務計算這種方式。 – graeme 2014-10-31 00:15:45

+0

@graeme如果您認爲此答案解決了您的問題,請將此答案標記爲解決方案(帖子旁邊的ok標誌):) – 2014-10-31 01:27:37

+0

我還有一個問題。另一部分任務。我需要創建一個循環來創建所有可能的5個字符的密碼。繼承人我有什麼,但我不認爲它生產的所有密碼。 char c1 ='0'; char c2 ='0'; char c3 ='0'; char c4 ='0'; char c5 ='0';對於(c2 ='0'; c2 <='Z'; c2 ++){(c1 ='0'; c1 <='Z'; c1 ++){(012) (c5 ='0'; c5 ='Z'; c3 ='0'; c3 ++){c3 = ; c5 ++){ }}}}} password =「」+ c1 + c2 + c3 + c4 + c5; – graeme 2014-10-31 21:40:01