2013-12-18 2 views
0

В моей программе уравнение решается для y, заданного диапазоном значений x. Как сохранить эти значения в y и распечатать их как массив. Я думал, что должен использовать индексный метод, но у меня есть ошибка. Множественные маркеры на этой линии - Синтаксическая ошибка в знак «]», VariableDeclaratorId ожидается после этот маркер - у не может быть разрешен к типуСохранение вычисленных значений в массив

Что мне нужно изменить?

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

вам необходимо инициализировать Y

Поместить это вне цикла в то время как

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

Затем вы можете использовать индексный метод

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

Предыдущие ответы помогут вам устранить проблемы компилятора. Но есть и другие вещи, которые вы должны рассмотреть следующие вопросы:

  1. Вы расчет 1/SQRT (2 * пи) в каждой итерации цикла в то время. Это не хорошо с точки зрения производительности, поскольку этот расчет никогда не изменится. Поэтому лучше вывести этот расчет из цикла while.

  2. Вам не нужно определять свои собственные пи и е. Просто используйте статические в классе Math: 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++; 
     } 
    } 
} 
Смежные вопросы