5 回答

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
這是因?yàn)槟鷽](méi)有在 x 更改時(shí)更新 y。您將 y 定義為:
double y = 4*x2 + 5*x - 3;
一開(kāi)始,但你需要隨著 x 的增量變化而更新它。你可以做:
while(counter <= 1.0)
{
y = 4*x*x + 5*x - 3;
System.out.print(y);
counter += 0.1;
x += 0.1;
}
但這是一件美妙的事情,您可以使用 x 作為計(jì)數(shù)器來(lái)簡(jiǎn)化代碼:
while(x <= 1.0)
{
y = 4*x*x + 5*x - 3;
System.out.print(y);
x += 0.1;
}
有更多方法可以簡(jiǎn)化此代碼,我鼓勵(lì)您嘗試使用它并嘗試找出一些方法來(lái)改進(jìn)它!

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

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
每次循環(huán)都需要計(jì)算。
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)驗(yàn) 獲得超8個(gè)贊
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;
}
}
}
您需要重新計(jì)算 y 的值。

TA貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
y問(wèn)題是您在 update 之后沒(méi)有重新計(jì)算x。這是一個(gè)可能有效的示例:
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;
}
}
}
添加回答
舉報(bào)