Java程序实现布尔而不是(!)

时间:2013-04-16 08:09:18

标签: java boolean

我不明白以下问题的额外信用问题。 我已经实现了try-catch语句并且似乎工作正常但我们的教师现在希望我们在循环条件中使用boolean变量而不是 data!= 0 。我在猜测:

while(data!=0.0)

但那怎么办?我是完全摆脱它而只是使用我已创建的boolean? P.S。:我意识到这可能非常简单,我只是没有看到它。

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);
    }
}

4 个答案:

答案 0 :(得分:2)

我更新了你的程序,使用boolean而不是(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);
    }
}

希望它能解决你的问题!

答案 1 :(得分:1)

我想他想要

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

这更清晰,更安全,因为您可能需要对0.0不是最后一个值的值求和。

使用此循环,您将能够删除当前的大部分代码。

答案 2 :(得分:0)

boolean valid = true;
while (valid) {
    if((data =input.nextDouble()) != 0.0)
        valid = true;
    else
       valid = false;

// perform your calculation.
}

答案 3 :(得分:0)

永远不要将double in用作逻辑(停止)条件,尤其是==!=

代码中的一个问题是data == 0.0将此表示形式设置为double非常困难,尤其是在执行某些计算时。这是由representation error

引起的

当你使用0时,作为停止条件我将从用户输出中删除它并仅留下Enter键作为退出循环的唯一方法。