2013-12-18 127 views
0

在我的程序中,給定x值範圍時,y方程將被求解。然後,我如何將這些值存儲到y中並將其作爲數組打印出來。我以爲我應該使用索引方法,但我有一個錯誤。 多個標記在該行 - 令牌語法錯誤「]」,VariableDeclaratorId 後預計此令牌 - Y不能被解析爲一個類型將計算值存儲到數組中

我需要做什麼修改?

import java.lang.Math; 
import java.util.Arrays; 
public class Standard { 
    public static void main (String[] args) { 
     double exponent, x, pi, e, sqrtpart; 
     double[] y; 
     pi = 3.14159; 
     e = 2.71828; 
     x = -2.0; 
     int count = 0; 

     while (count < 20) 
     { 
     exponent = - ((x*x)/(2)); 

     sqrtpart = Math.sqrt(2*pi); 

     y[] = (Math.pow(e,exponent))/sqrtpart; 
     System.out.println(y[index]); 

     x = x + 0.2; 
     count++; 
     } 
     } 
    } 
+0

如果你表現出你的錯誤這將有助於。 「但我有一個錯誤」不會讓我們繼續下去,是嗎? –

+0

我輸入了錯誤 – user3112609

+0

還有一個'索引不能解決變量'錯誤在第20行。 – PakkuDon

回答

1

變化

double[] y; 

double[] y = new double[20]; 

而且

y[] = (Math.pow(e,exponent))/sqrtpart; 
    System.out.println(y[index]); 

y[count] = (Math.pow(e,exponent))/sqrtpart; 
    System.out.println(y[count]); 
0

您不能將值放入y array,因爲它目前沒有任何大小。

嘗試double y [] = new double [20];

而且

System.out.println(y[index]); 

應該

System.out.println(y[count]); 
0

您需要初始化Ÿ

將這個while循環外

y = new double[<size of your array>]; 

然後你就可以使用索引方法

y[index] = (Math.pow(e,exponent))/sqrtpart; 
0

前面的回答可以幫助你解決問題的編譯器。但也有其他的事情你應該考慮:

  1. 您計算在while循環每一個迭代1 /的sqrt(2 * PI)。從性能角度來看,這是不好的,因爲這個計算不會改變。所以最好把這個計算從while循環中取出來。

  2. 你不需要定義你自己的pi和e。 Math.PI,Math.E

  3. 您的代碼中有硬編碼的值,用於數組大小和增量。這會讓你的代碼變得脆弱。你可以改變一個號碼而錯過另一個號碼。

所以考慮以下幾點:

import java.lang.Math; 

public class Standard { 

    static int size = 20; 
    static double width = 4.0; 
    static double increments = width/size; 

    public static void main (String[] args) { 

     double exponent, x, sqrtpart; 

     double[] y = new double[size]; 

     x = - (width/2); 

     sqrtpart = Math.sqrt(2* Math.PI); 

     int count = 0; 
     while (count < size) 
     { 
      exponent = - ((x*x)/(2)); 

      y[count] = (Math.pow(Math.E,exponent))/sqrtpart; 

      System.out.println(y[count]); 

      x = x + increments; 

      count++; 
     } 
    } 
}