Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Eclipse中,我不断减去while循环值,结果它赢了';I don’我不能给我正确的答案_Java_Eclipse_If Statement_Input_While Loop - Fatal编程技术网

Java Eclipse中,我不断减去while循环值,结果它赢了';I don’我不能给我正确的答案

Java Eclipse中,我不断减去while循环值,结果它赢了';I don’我不能给我正确的答案,java,eclipse,if-statement,input,while-loop,Java,Eclipse,If Statement,Input,While Loop,因此,我试图在我的程序中包含一个美元测试,检查用户输入的值是否是可能的美元金额。在while循环中,我在减去0.01时遇到了问题。这个想法是,如果他们输入一个小数点后3位的值,比如2.345,它将捕获该值,并使输入成为一个有效的数字。有人对如何解决这个问题有什么建议吗 Scanner input = new Scanner(System.in); double dollar = 0; System.out.print("Please enter a dollar amount: ")

因此,我试图在我的程序中包含一个美元测试,检查用户输入的值是否是可能的美元金额。在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);
    }
}
扫描仪输入=新扫描仪(System.in);
双美元=0;
System.out.print(“请输入美元金额:”);
美元=输入.nextDouble();
而(美元!=0){
美元-=.01;
如果(美元<0)
{System.out.print(“请输入有效的美元金额:”);
美元=输入.nextDouble();
}   
系统输出打印单位(美元);
}
}

我已经用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;
        }

    }

}
import java.util.Scanner;
公共类测试{
公共静态void main(字符串参数[])
{
扫描仪输入=新扫描仪(System.in);
双美元=0;
System.out.print(“请输入美元金额:”);
美元=输入.nextDouble();
System.out.println(“您的价值:+美元”);
字符串文本=Double.toString(Math.abs(美元));
int integerPlaces=text.indexOf('.');
int decimalPlaces=text.length()-integerPlaces-1;
美元-=.01;
而(美元=0 |美元<0 |小数位数>3){
System.out.print(“请输入有效的美元金额:”);
美元=输入.nextDouble();
系统输出打印单位(美元);
text=Double.toString(Math.abs(美元));
integerPlaces=text.indexOf('.');
decimalPlaces=text.length()-integerPlaces-1;
美元-=.01;
}
}
}

我明白你的意思,但是如果用户输入50.991呢?我想弄清楚的是,他是否输入了很多小数位。在while condition&cross check decimal digits中进行另一个检查你可以使用'toString().length()`,这个链接也可能有帮助-->