Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 条件语句睡眠_Java - Fatal编程技术网

Java 条件语句睡眠

Java 条件语句睡眠,java,Java,为什么我得到的是“缺陷”而不是“正常” 给定三个数字:A、B和H。 根据医生报告: 一个人每天至少应该睡一个小时 但不超过B小时 H是安娜睡觉的时间 任务: 如果Anna睡眠不足一个小时,打印“不足” 如果她睡眠时间超过BB小时,打印“过量” 如果她的睡眠符合建议,打印“正常” 公共类主{ 公共静态void main(字符串[]args){ 扫描仪输入=新扫描仪(System.in); int units=input.nextInt(); int a=input.nextInt(); i

为什么我得到的是“缺陷”而不是“正常”

给定三个数字:A、B和H。 根据医生报告:

  • 一个人每天至少应该睡一个小时
  • 但不超过B小时
  • H是安娜睡觉的时间
任务:

  • 如果Anna睡眠不足一个小时,打印“不足”
  • 如果她睡眠时间超过BB小时,打印“过量”
  • 如果她的睡眠符合建议,打印“正常”
公共类主{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int units=input.nextInt();
int a=input.nextInt();
int b=input.nextInt();
inth=b-a;
if(hb){
系统输出打印项次(“超额”);
}else如果(h==8){
系统输出打印项次(“正常”);
}
}
}
您提到“H是安睡的小时数。”但我从您的代码中看到,您正在计算这一行的H

int h = b - a;
在这种情况下,h始终小于a,因此触发第一个if语句:

if (h < a ){
    System.out.println("Deficiency");
}
if(h
要解决此问题,请同时获取h的输入,然后查看它是否在正常范围内。这应该起作用:

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        int units = input.nextInt();

     
        int a = input.nextInt();
        int b = input.nextInt();
        int h = input.nextInt(); // get an input for Ann's sleep time

        if (h < a ){
            System.out.println("Deficiency");
        } else if (h > b) {
            System.out.println("Excess");
        } else if (h >= a && h <= b) // h must fall between a and b ranges to be considered normal
        {
            System.out.println("Normal");
        }

    }
}
公共类主{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int units=input.nextInt();
int a=input.nextInt();
int b=input.nextInt();
int h=input.nextInt();//获取安的睡眠时间的输入
if(hb){
系统输出打印项次(“超额”);
}否则,如果(h>=a&&h您提到“h是安睡的小时数。”但我从您的代码中看到,您正在计算这一行的h

int h = b - a;
在这种情况下,h始终小于a,因此触发第一个if语句:

if (h < a ){
    System.out.println("Deficiency");
}
if(h
要解决此问题,请同时获取h的输入,然后查看它是否在正常范围内。这应该可以工作:

public class Main {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);

        int units = input.nextInt();

     
        int a = input.nextInt();
        int b = input.nextInt();
        int h = input.nextInt(); // get an input for Ann's sleep time

        if (h < a ){
            System.out.println("Deficiency");
        } else if (h > b) {
            System.out.println("Excess");
        } else if (h >= a && h <= b) // h must fall between a and b ranges to be considered normal
        {
            System.out.println("Normal");
        }

    }
}
公共类主{
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(System.in);
int units=input.nextInt();
int a=input.nextInt();
int b=input.nextInt();
int h=input.nextInt();//获取安的睡眠时间的输入
if(hb){
系统输出打印项次(“超额”);

}否则,如果(h>=a&&h这与需求所说的不匹配。你应该得到
h
的输入-你不能从
a
b
计算它,因为它们是它们应该得到的常量;它们与实际得到的无关

如果
a<2b
,你总是会得到一个缺陷。否则,你总是会得到“过量”(除了在
b-a=8
的特殊情况下,在这种情况下,你会得到“正常”;同样,在
a=b
的情况下,你根本不会打印任何东西)

第三种情况(硬编码为h==8)不符合要求,也不是真的。要求不仅没有说8小时的睡眠是正常的,甚至不是真的——8小时的睡眠只是平均水平——有些人可能需要更多或更少。要求检查
h
是否介于
a
b
,而不是检查是否正好是8小时

另外,从用户输入的角度来看,您应该提示用户输入,如下所示:

System.out.println("Enter the minimum amount of sleep:");
int a = input.nextInt();

System.out.println("Enter the maximum amount of sleep:");
int b = input.nextInt();

System.out.println("Enter the actual amount of sleep:");
int h = input.nextInt();

最后,您从未实际使用过
单元,因此这不是不必要的,或者您忘记了实现一个需求。

这与需求所说的并不完全匹配。您应该获得
h
的输入-您不能从
a
b
计算它,因为它们是假定的常量他们与他们实际得到的东西无关

如果
a<2b
,你总是会得到一个缺陷。否则,你总是会得到“过量”(除了在
b-a=8
的特殊情况下,在这种情况下,你会得到“正常”;同样,在
a=b
的情况下,你根本不会打印任何东西)

第三种情况(硬编码为h==8)不符合要求,也不是真的。要求不仅没有说8小时的睡眠是正常的,甚至不是真的——8小时的睡眠只是平均水平——有些人可能需要更多或更少。要求检查
h
是否介于
a
b
,而不是检查是否正好是8小时

另外,从用户输入的角度来看,您应该提示用户输入,如下所示:

System.out.println("Enter the minimum amount of sleep:");
int a = input.nextInt();

System.out.println("Enter the maximum amount of sleep:");
int b = input.nextInt();

System.out.println("Enter the actual amount of sleep:");
int h = input.nextInt();

最后,您从未实际使用过
单元,因此这可能是不必要的,或者您忘记了实现某个需求。

为什么不这样简化它呢

  • 首先,检查她是否睡得太少
  • 如果她没有,确保她没有睡太多
  • 然后排除,不需要测试,所以她一定睡得很正常
扫描仪输入=新扫描仪(System.in);
int tooLittle=input.nextInt();
int-toomoot=input.nextInt();
int hoursleep=input.nextInt();
如果(小时睡眠=太多){
系统输出打印项次(“超额”);
}否则{
系统输出打印项次(“正常”);
}
请注意,
太多
tooLittle
之间的区别与Anna睡了多少没有关系。因此,您还需要