【问题标题】:Eclipse, I keep subtracting a while-loop value, and it won't give me the correct answerEclipse,我一直减去一个while循环值,它不会给我正确的答案
【发布时间】:2016-06-02 14:33:00
【问题描述】:

所以我试图在我的程序中包含一个美元测试,以检查用户输入的值是否是可能的美元金额。我在while循环中减去0.01时遇到了麻烦。这个想法是,如果他们输入一个小数点后 3 位的值,例如 2.345,它会捕获它并让输入的数字有效。有人对如何解决此问题有任何建议吗?

Scanner input = new Scanner(System.in);

double dollar = 0;

    System.out.print("Please enter a dollar amount: ");
    dollar = input.nextDouble();

    while (dollar != 0){
        dollar -= .01;
        if (dollar < 0)
            {System.out.print("Please enter a valid dollar amount: ");
            dollar = input.nextDouble();
            }   
        System.out.println(dollar);
    }
}

【问题讨论】:

    标签: java eclipse if-statement input while-loop


    【解决方案1】:

    我已经用 while 循环结构中的验证更新了您的代码片段。 只有满足以下所有条件时,此循环才会中断

    • 用户输入>0.01 $
    • 用户输入为正值
    • 用户输入只有两个十进制值

    你可以试试下面的代码

    import java.util.Scanner;   
    public class Testing {
        public static void main(String args[])
        {
            Scanner input = new Scanner(System.in);
            double dollar = 0;
            System.out.print("Please enter a dollar amount: ");
            dollar = input.nextDouble();
            System.out.println("Your value :" + dollar);
            String text = Double.toString(Math.abs(dollar));
            int integerPlaces = text.indexOf('.');
            int decimalPlaces = text.length() - integerPlaces - 1;
            dollar -= .01;
            while (dollar == 0 | dollar < 0 | decimalPlaces>3){
                System.out.print("Please enter a valid dollar amount: ");
                dollar = input.nextDouble();
                System.out.println(dollar);
                text = Double.toString(Math.abs(dollar));
                integerPlaces = text.indexOf('.');
                decimalPlaces = text.length() - integerPlaces - 1;
                dollar -= .01;
            }
    
        }
    
    }
    

    【讨论】:

    • 我明白你的意思,但是如果用户输入 50.991 会怎样?这就是我要弄清楚的部分是他是否输入了许多小数位。
    • 在条件和交叉检查十进制数字时再次签入
    • 你可以使用`toString().length()`,这个链接也可能有帮助 --> stackoverflow.com/questions/6264576/…
    猜你喜欢
    • 1970-01-01
    • 2020-08-13
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多