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