5 回答
TA贡献1776条经验 获得超12个赞
这是因为您没有在 x 更改时更新 y。您将 y 定义为:
double y = 4*x2 + 5*x - 3;
一开始,但你需要随着 x 的增量变化而更新它。你可以做:
while(counter <= 1.0)
{
y = 4*x*x + 5*x - 3;
System.out.print(y);
counter += 0.1;
x += 0.1;
}
但这是一件美妙的事情,您可以使用 x 作为计数器来简化代码:
while(x <= 1.0)
{
y = 4*x*x + 5*x - 3;
System.out.print(y);
x += 0.1;
}
有更多方法可以简化此代码,我鼓励您尝试使用它并尝试找出一些方法来改进它!
TA贡献1859条经验 获得超6个赞
欢迎来到编码世界!当您运行一个循环时,其中的代码将被执行多次。虽然很直观地认为通过定义为意味着什么时候更新的y函数,但不幸的是事实并非如此。为了更新该值,您必须在每次运行循环时重新评估它。xyx
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;
}
}
这行得通,但我们可以做得更好。如果您想尝试相对于 x 动态更新 y,请考虑编写一个函数:
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。
TA贡献1825条经验 获得超6个赞
每次循环都需要计算。
double getY(double x){
...
}
while(counter <= 1.0)
{
System.out.print(getY(x));
counter += 0.1;
x += 0.1;
}
TA贡献1725条经验 获得超7个赞
public static void main(String[] args)
{
double x = 0.1;
double x2 = Math.pow(x,2);
double y;
double counter = 0.1;
while(counter <= 1.0)
{
y = 4*x2 + 5*x - 3;
System.out.print(y);
counter =+ 0.1;
x =+ 0.1;
}
}
}
您需要重新计算 y 的值。
TA贡献1843条经验 获得超7个赞
y问题是您在 update 之后没有重新计算x。这是一个可能有效的示例:
public class Main {
double static calcY(double x) {
double x2 = Math.pow(x,2);
double y = 4*x2 + 5*x - 3;
return y;
}
public static void main(String[] args)
{
double x = 0.1;
double counter = 0.1;
while(counter <= 1.0)
{
double y = calcY(x);
System.out.print(y);
counter += 0.1;
x += 0.1;
}
}
}
添加回答
举报