Java 我做错了什么y=4x^2+;5x-3,x必须以+从0.1开始,以1.0结束;0.1步

Java 我做错了什么y=4x^2+;5x-3,x必须以+从0.1开始,以1.0结束;0.1步,java,Java,我需要将xgo+分为0.1步,直到达到1.0 对于每个步骤,我都需要函数的输出y=4x^2+5x-3 Java给我的输出不是我所期望的 我试了一会儿。我必须提到我是一个全新的初学者 public class Main { public static void main(String[] args) { double x = 0.1; double x2 = Math.pow(x,2); double y = 4*x2 + 5*x -

我需要将
x
go+分为0.1步,直到达到1.0

对于每个步骤,我都需要函数的输出
y=4x^2+5x-3

Java给我的输出不是我所期望的

我试了一会儿。我必须提到我是一个全新的初学者

public class Main {
    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;
            x =+ 0.1;             
        }
    }
}
公共类主{
公共静态void main(字符串[]args)
{
双x=0.1;
double x2=数学功率(x,2);
双y=4*x2+5*x-3;
双计数器=0.1;

虽然(计数器欢迎来到编码世界!当您运行循环时,循环中的代码将被执行多次。虽然直观地认为,通过将
y
定义为
x
的函数,意味着
y
x
更新时会更新,但不幸的是,情况并非如此。为了更新值,您必须每次运行循环时重新评估它

publicstaticvoidmain(字符串[]args){
双x=0.1;
double x2=数学功率(x,2);
双y=4*x2+5*x-3;
双计数器=0.1;

而(计数器需要在每个循环中进行计算

double getY(双x){
...
}
while(计数器
publicstaticvoidmain(字符串[]args)
{
双x=0.1;
double x2=数学功率(x,2);
双y;
双计数器=0.1;

而(计数器问题在于,在更新
x
之后,您没有重新计算
y
。下面是一个可能有效的示例:


公共班机{
双静态计算(双x){
double x2=数学功率(x,2);
双y=4*x2+5*x-3;
返回y;
}
公共静态void main(字符串[]args)
{
双x=0.1;
双计数器=0.1;

而(计数器这是因为当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;             
}

while(counter)你应该在循环的每一步重新计算y。
counter=+0.1;
你期望它做什么?因为我认为它没有你期望它做什么。你声明的变量在“输入”时不会自动更新改变。例如,
y
不会改变,如果你只是改变
x
。当你改变
x
时,你需要显式地重新计算
y
。我认为它会在0.1的基础上增加一个0.1,从而使之成为一个2.0?
=
需要是
+=
,它们是不等价的。这将在当前状态下永远运行。它说了一些类似“不能从静态上下文引用非静态方法”的注释是的,因为
calcY
是一个从
main
调用的实例方法,这是一个静态方法。@LaffaYett。我编辑了示例来解决这个问题。
=+
必须是
+=
,它们不是等价的。这将在当前状态下永远运行。说得好,伙计们!Tunnel vision,应该提供更好的解决方案r回答:)
=+
需要是
+=
,它们不是等价的。这将在当前状态下永远运行。计算后应增加x。由于
y
在x增量和计算之前打印,我认为(未测试)代码运行得很好-我同意,不过,约定在计算后会说增量。从
double x=0;
开始当然会修正它。你说得很对!我不只是在评论中说这是一个很好的约定,而是决定在回答中显示它。谢谢你指出它!不过,当我尝试做你的时候,有一个问题另外,它说的是“非静态方法不能从静态上下文引用”
while(counter <= 1.0)
{
    y = 4*x*x + 5*x - 3;
    System.out.print(y);
    counter += 0.1;
    x += 0.1;             
}
while(x <= 1.0)
{
    y = 4*x*x + 5*x - 3;
    System.out.print(y);
    x += 0.1;             
}