Java—将if语句放入开关块
我有一个任务,我必须使用开关。当输入整数-1时,程序应该终止。任何介于1和7之间的数字都将显示一周中的某一天。介于1到7和-1之间的任何其他数字将显示:“仅接受1到7之间的数字”。 当输入-1时,如何使程序终止。以下是迄今为止的代码:Java—将if语句放入开关块,java,if-statement,switch-statement,Java,If Statement,Switch Statement,我有一个任务,我必须使用开关。当输入整数-1时,程序应该终止。任何介于1和7之间的数字都将显示一周中的某一天。介于1到7和-1之间的任何其他数字将显示:“仅接受1到7之间的数字”。 当输入-1时,如何使程序终止。以下是迄今为止的代码: Scanner s = new Scanner(System.in); String res = ""; System.out.println("Input a number "); int day = s.nextInt();
Scanner s = new Scanner(System.in);
String res = "";
System.out.println("Input a number ");
int day = s.nextInt();
if(day==-1){
System.exit(0);
}
switch (day) {
case 1:
res="Today is Sunday";
break;
case 2:
res="Today is Monday";
break;
case 3:
res = "Today is Tuesday";
break;
case 4:
res = "Today is Wednesday";
break;
case 5:
res = "Today is Thursday";
break;
case 6:
res = "Today is Friday";
break;
case 7:
res = "Today is Saturday";
break;
default:
res = "Only numbers from 1 to 7 are accepted ";
break;
}
System.out.println(res);
}
}
使用我的解决方案更新了代码。尝试此操作,检查一天是否大于1,然后将其发送到switch case
if(day>=1){
System.exit(0);
}else{
switch(day%7){
case:
}
}
您的程序正在请求输入
1-7
,但当您切换day%7
时,它将不适用于输入7
,如果day=7
,则day%7=0
。您需要删除第%7天
,只放置第
天。那么完整的解决方案将是:
System.out.println("Input a number ");
int day = s.nextInt();
switch (day) {
case -1:
System.exit(0);
break;
case 1:
res="Today is Sunday";
break;
case 2:
res="Today is Monday";
break;
case 3:
res = "Today is Tuesday";
break;
case 4:
res = "Today is Wednesday";
break;
case 5:
res = "Today is Thursday";
break;
case 6:
res = "Today is Friday";
break;
case 7:
res = "Today is Saturday";
default:
res = "Only numbers from 1 to 7 are accepted ";
break;
}
System.out.println(res);
}
你为什么需要%呢?您已经显式地处理了每一个案例…让缺省值处理其他所有事情
Switch(day)
{
case 1:
..
default:
}
如果你给你的代码8,那么8%7==1,那么今天就是星期天 作为Sage的答案,您可以将案例1:System.exit(0);打破如果逻辑在方法中,则使用return语句(我认为使用return语句比使用System.exit()更优雅)
然而,您的逻辑永远不会达到“案例7”,因为您使用“day%7”,它将在除以7后返回余数,因此,如果day为正,它将在0到6之间;如果day为负,它将在-6到0之间。使用do while可以帮助您获得所需的行为
{
Scanner s = new Scanner(System.in);
String res = "";
Integer day;
do{
System.out.println("Input a number ");
day = s.nextInt();
System.out.println(day);
switch (day) {
case 1:
res="Today is Sunday";
break;
case 2:
res="Today is Monday";
break;
case 3:
res = "Today is Tuesday";
break;
case 4:
res = "Today is Wednesday";
break;
case 5:
res = "Today is Thursday";
break;
case 6:
res = "Today is Friday";
break;
case 7:
res = "Today is Saturday";
default:
res = "Only numbers from 1 to 7 are accepted ";
break;
}
System.out.println(res);
}
while (!day.equals(-1));
}
当(true){}时,您可以将扫描仪初始化放在循环之外。由于某些原因,这不起作用,因此会发生什么情况,仍然显示默认语句。您可以删除%并直接传递值或计算外部开关并传递value@user2934299,我已经发表评论说你应该写这些案例。无论如何,用
复制粘贴更新了完整的答案@ling.s,谢谢你通知我我自己愚蠢的误解:)事实上,第%7天不可能等同于第7天。在案例7中,你需要一个break语句。我不确定你的问题和标题“Java-将if语句放入开关块”之间是否有任何关系。这是真的,只是让我自己更加困惑。