簡體   English   中英

Java程式實現boolean而非(!)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM