Добро пожаловать в мир кодирования! Когда вы запускаете цикл, код внутри него будет выполняться несколько раз. Хотя интуитивно понятно, что определение y
как функции x
означает y
обновления, когда x
делает, к сожалению, это не так. Чтобы обновить значение, вы должны переоценивать его каждый раз при прохождении цикла.
public static void main(String[] args) {
double x = 0.1;
double x2 = Math.pow(x,2);
double y = 4*x2 + 5*x - 3;
double counter = 0.1;
while(counter <= 1.0)
{
System.out.print(y);
counter += 0.1;
//re-evaluate x, x2, and y here
x += 0.1;
x2 = Math.pow(x,2);
y = 4*x2 + 5*x - 3;
}
}
Это работает, но мы можем сделать лучше. Если вы хотите попробовать динамически обновлять y относительно x, попробуйте написать функцию:
double calculateY(double x) {
double value = 4*(x*x) + 5*x - 3;
return value;
}
В вашем цикле вы бы вызвали функцию следующим образом:
y = calculateY(x);
Функции - очень хороший способ быстро и легко выполнять сложные наборы кода. В качестве бонуса, если вы хотите вычислить y
где-то еще в вашем коде, вам не нужно копировать-вставлять из вашего цикла. Это хорошая практика, потому что если вам позже понадобится изменить уравнение, вам нужно изменить его только один раз, в функции, а не в нескольких местах, где вы можете ошибаться.
Вот как может выглядеть измененный код. Обратите внимание, что я начинаю переменные с 0 - это может помочь избежать путаницы.
double calculateY(double x) {
double value = 4*(x*x) + 5*x - 3;
return value;
}
public static void main(String[] args) {
double x = 0;
double y = 0;
while (x <= 1.0) {
x += 0.1;
y = calculateY(x);
System.out.print(y);
}
}
Намного меньше беспорядка! Этот код легко читается и легче редактируется. Если вы хотите вычислить y
другим способом, вам нужно всего лишь изменить функцию calculateY
- с дополнительным преимуществом, которое вам не нужно пересчитывать или даже включать в переменные x2
или counter
.