5 回答

TA貢獻(xiàn)1776條經(jīng)驗 獲得超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 作為計數(shù)器來簡化代碼:
while(x <= 1.0)
{
y = 4*x*x + 5*x - 3;
System.out.print(y);
x += 0.1;
}
有更多方法可以簡化此代碼,我鼓勵您嘗試使用它并嘗試找出一些方法來改進(jìn)它!

TA貢獻(xiàn)1859條經(jīng)驗 獲得超6個贊
歡迎來到編碼世界!當(dāng)您運(yùn)行一個循環(huán)時,其中的代碼將被執(zhí)行多次。雖然很直觀地認(rèn)為通過定義為意味著什么時候更新的y函數(shù),但不幸的是事實并非如此。為了更新該值,您必須在每次運(yùn)行循環(huán)時重新評估它。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 動態(tài)更新 y,請考慮編寫一個函數(shù):
double calculateY(double x) {
double value = 4*(x*x) + 5*x - 3;
return value;
}
在你的循環(huán)中,你會這樣調(diào)用函數(shù):
y = calculateY(x);
函數(shù)是一種快速輕松地執(zhí)行復(fù)雜代碼集的好方法。作為獎勵,如果您想y在代碼中的其他地方計算,則不必從循環(huán)中復(fù)制粘貼。這是一個很好的做法,因為如果您以后需要更改方程式,則只需在函數(shù)中更改一次,而不是在可能會出錯的多個地方更改。
修改后的代碼可能如下所示。請注意,我從 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函數(shù)——還有一個好處是你不需要重新計算,甚至不需要包含x2變量counter。

TA貢獻(xiàn)1825條經(jīng)驗 獲得超6個贊
每次循環(huán)都需要計算。
double getY(double x){
...
}
while(counter <= 1.0)
{
System.out.print(getY(x));
counter += 0.1;
x += 0.1;
}

TA貢獻(xiàn)1725條經(jīng)驗 獲得超8個贊
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貢獻(xiàn)1843條經(jīng)驗 獲得超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;
}
}
}
添加回答
舉報