[英]While loop to find square root of a number until it is less than or equal to 1.01
我需要幫助實現一個 while 循環,該循環將用戶輸入作為雙精度或整數(不確定)並平方根,直到它達到小於或等於 1.01。
示例: Math.sqrt(10.5)
1. Calculated square root is --> 3.24037034920393
2. Calculated square root is --> 1.8001028718392542
3. Calculated square root is --> 1.3416791240230483
4. Calculated square root is --> 1.1583087343290857
5. Calculated square root is --> 1.0762475246564267
6. Calculated square root is --> 1.0374235030383814
7. Calculated square root is --> 1.0185398877993839
import java.util.Scanner;
public class SquareRoot {
public static void main (String args[]){
final double SENTINEL = 10;
int count = 0;
Scanner scan = new Scanner(System.in);
double userInput; // input value
do
{
System.out.println( "Enter a number greater than 10" );
userInput = scan.nextDouble( );
} while ( userInput <= 1 || userInput >= 10 );
double squareRoot = Math.sqrt(userInput);
double resultSquareRoot = Math.sqrt(squareRoot);
while (resultSquareRoot <= 1.01){
resultSquareRoot = Math.sqrt(squareRoot);
}
System.out.println(resultSquareRoot);
}
}
你的循環:
while (resultSquareRoot <= 1.01){
resultSquareRoot = Math.sqrt(squareRoot);
}
System.out.println(resultSquareRoot);
應該:
while (resultSquareRoot > 1.01){
System.out.println("Calculated square root is --> " + resultSquareRoot);
resultSquareRoot = Math.sqrt(resultSquareRoot);
}
您沒有將參數的值更改為Math.sqrt
,因此resultSquareRoot
永遠不會改變。
你想要resultSquareRoot = Math.sqrt(resultSquareRoot);
而不是resultSquareRoot = Math.sqrt(squareRoot);
在您的解決方案中需要注意的事情很少,為什么要嘗試在 do-while 中調用以下代碼行。 不需要,因為您的意圖是應用 Math.sqrt 直到輸入的平方數達到 1.01,因此我們在這里討論的是循環。
System.out.println("請輸入一個大於10的數字"); userInput = scan.nextDouble();
你也不需要第二個 while 循環。
while (resultSquareRoot <= 1.01){
resultSquareRoot = Math.sqrt(squareRoot);
}
您的代碼中缺少的是中斷條件。
這可以通過以下代碼行來實現。
do {
userInput = Math.sqrt(userInput);
System.out.println("Calculated square root is -->"+userInput);
if(userInput<= 1.01)
break;
} while (userInput >= 1.01 );
Calculated square root is -->3.24037034920393
Calculated square root is -->1.8001028718392542
Calculated square root is -->1.3416791240230483
Calculated square root is -->1.1583087343290857
Calculated square root is -->1.0762475246564267
Calculated square root is -->1.0374235030383814
Calculated square root is -->1.0185398877993839
Calculated square root is -->1.0092273717053972
你可能想改變
while (resultSquareRoot <= 1.01){
resultSquareRoot = Math.sqrt(squareRoot);
}
到
while (resultSquareRoot > 1.01){
resultSquareRoot = Math.sqrt(resultSquareRoot );
}
do while 條件錯誤。 它應該是:
do
{
System.out.println( "Enter a number greater than 10" );
userInput = scan.nextDouble( );
} while ( userInput <= 10 );
而while條件也是錯誤的。 請檢查以下代碼:
public static void main (String args[]){
final double SENTINEL = 10;
int count = 0;
Scanner scan = new Scanner(System.in);
double userInput; // input value
do
{
System.out.println( "Enter a number greater than 10" );
userInput = scan.nextDouble( );
} while ( userInput <= 10 );
double resultSquareRoot = userInput;
while (resultSquareRoot >= 1.01){
resultSquareRoot = Math.sqrt(resultSquareRoot);
}
System.out.println(resultSquareRoot);
}
你要求的數字大於 10,所以你應該有
do
{
System.out.println( "Enter a number greater than 10" );
userInput = scan.nextDouble( );
} while ( userInput < 10 );
因為您想在一個小於 10 的數字時繼續詢問。
然后在這里,你總是在做Math.sqrt(squareRoot)
並將它存儲在resultSquareRoot
,所以你總是在 while 循環內的resultSquareRoot
獲得相同的值,因為你永遠不會改變squareRoot
的值。 並且您希望您的條件在while it is greater than 1.01
double squareRoot = Math.sqrt(userInput);
double resultSquareRoot = Math.sqrt(squareRoot);
while (resultSquareRoot > 1.01){
resultSquareRoot = Math.sqrt(resultSquareRoot);
}
System.out.println(resultSquareRoot);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.