[英]Java program implementing boolean instead of not (!)
對於以下問題,我不理解其他額外的信用問題。 我已經實現了try-catch語句,並且看起來工作正常,但是我們的講師現在希望我們在循環條件中使用boolean
變量而不是data!= 0 。 我正在猜測:
while(data!=0.0)
但是那將如何工作? 我是否會完全擺脫它,而使用已經創建的boolean
? PS:我意識到這可能非常簡單,我只是沒有看到。
import java.util.*;
public class SumInput {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double data = 1.0;
double sum = 0.0;
boolean valid = false;
while (!valid) {
try {
while (data != 0.0) {
System.out.print("So far, sum = " + sum
+ "\nEnter a number or 0 to exit: ");
data = input.nextDouble();
sum = sum + data;
valid = true;
}
} catch (InputMismatchException e) {
System.out.println("Error--please enter a double number");
input.next();
} catch (NoSuchElementException e) {
System.out.println("\nGoodbye!");
System.exit(0);
}
}
System.out.println("Ending sum: " + sum);
}
}
我已更新您的程序,以使用布爾值而不是您的講師期望的(data!= 0.0)。 在下面找到程序:
import java.util.*;
public class SumInput {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double data = 1.0;
double sum = 0.0;
boolean valid = false;
while (!valid) {
try {
while (true) {
System.out.print("So far, sum = " + sum
+ "\nEnter a number or 0 to exit: ");
data = input.nextDouble();
sum = sum + data;
valid = true;
if (data == 0.0) {
break;
}
}
} catch (InputMismatchException e) {
System.out.println("Error--please enter a double number");
input.next();
} catch (NoSuchElementException e) {
System.out.println("\nGoodbye!");
System.exit(0);
}
}
System.out.println("Ending sum: " + sum);
}
}
希望它能解決您的問題!
我想他想要
public class SumInput {
public static void main(String... ignored) {
Scanner input = new Scanner(System.in);
double sum = 0.0;
while (true) {
System.out.println("So far, sum = " + sum);
System.out.print("Enter 'exit' to exit: ");
if (!input.hasNextDouble())
break;
sum += input.nextDouble();
}
System.out.println("Ending sum: " + sum);
}
}
運行像
So far, sum = 0.0
Enter 'exit' to exit: 122
So far, sum = 122.0
Enter 'exit' to exit: 232.2
So far, sum = 354.2
Enter 'exit' to exit: 322
So far, sum = 676.2
Enter 'exit' to exit: exit
Ending sum: 676.2
這可能更清晰,更安全,因為您可能希望對值不是最后一個值的值求和。
使用此循環,您將能夠刪除當前擁有的許多代碼。
boolean valid = true;
while (valid) {
if((data =input.nextDouble()) != 0.0)
valid = true;
else
valid = false;
// perform your calculation.
}
永遠不要將double用作邏輯(停止)條件,尤其是在==
或!=
。
代碼中的一個問題是data == 0.0
使這種表示形式加倍非常困難,尤其是當您執行一些計算時。 這是由表示錯誤引起的
當您使用0
作為停止條件時,我將從用戶輸出中刪除該條件,僅保留Enter
鍵作為退出循環的唯一方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.