黑马程序员技术交流社区
标题:
关于if语句的问题
[打印本页]
作者:
java陈辉
时间:
2013-12-30 19:28
标题:
关于if语句的问题
本帖最后由 java陈辉 于 2014-1-10 23:06 编辑
怎样用if语句判断键盘录入的值对应的星期几?下面是我写的代码,但是有bug,输入的是非数字就会报错,求怎样改成正确的。
public class IfTest {
public static void main(String[] args) {
Scanner sn=new Scanner(System.in);
int number=sn.nextInt();
if(number==1){
System.out.println("星期一");
}
if(number==2){
System.out.println("星期二");
}
if(number==3){
System.out.println("星期三");
}
if(number==4){
System.out.println("星期四");
}
if(number==5){
System.out.println("星期五");
}
if(number==6){
System.out.println("星期六");
}
if(number==7){
System.out.println("星期日");
}
if(number>7 || number<1){
System.out.println("你输入的数字非法");
}
}
}
作者:
段光宇
时间:
2013-12-30 19:45
本帖最后由 段光宇 于 2013-12-30 19:50 编辑
这个可以用try/catch来解决,通过catch捕捉输入错误并定义合理的错误输出。
代码如下:
public class test {
public static void main(String[] args) {
while(true){
try {
Scanner sn=new Scanner(System.in);
int number=sn.nextInt();
if(number==1){
System.out.println("星期一");
}
if(number==2){
System.out.println("星期二");
}
if(number==3){
System.out.println("星期三");
}
if(number==4){
System.out.println("星期四");
}
if(number==5){
System.out.println("星期五");
}
if(number==6){
System.out.println("星期六");
}
if(number==7){
System.out.println("星期日");
}
if(number>7 || number<1){
System.out.println("你输入的数字非法");
}
}
catch (Exception e) {
System.out.println("只能输入数字!请重新输入:");
}
}
}
}
复制代码
作者:
伍艳雄
时间:
2013-12-30 19:55
import java.util.*;
public class IfTest {
public static void main(String[] args) {
Scanner sn=new Scanner(System.in);
String number=sn.nextLine();
if("1".equals(number)){
System.out.println("星期一");
}
if("2".equals(number)){
System.out.println("星期二");
}
if("3".equals(number)){
System.out.println("星期三");
}
if("4".equals(number)){
System.out.println("星期四");
}
if("5".equals(number)){
System.out.println("星期五");
}
if("6".equals(number)){
System.out.println("星期六");
}
if("7".equals(number)){
System.out.println("星期日");
}
else{
System.out.println("你输入的数字非法");
}
}
}
复制代码
把int类型改成String类型....把==改成.equals.
这样就哦了.
作者:
75100313
时间:
2013-12-30 20:01
package com.mth.test;
import java.util.Scanner;
/*
* 验证输入:
* 正则表达式 来判断输入的是否合法(除了1-7其他都是错误的即使输入11 22也是错误的)
* 输入over停止输入
*
*
* */
public class IfTest {
public static void main(String[] args) {
while (true) {
System.out.println("请输入日期, 出入 over 停止:");
Scanner sn = new Scanner(System.in);
String str = sn.nextLine();
if ("over".equals(str)) {
break;
}
String regex = "[1-7]";
boolean b = str.matches(regex);
int number = 0;
if (b) {
number = Integer.parseInt(str);
} else {
System.out.println("输入错误 请输入数字1-7");
continue;
}
if (number == 1) {
System.out.println("星期一");
}
if (number == 2) {
System.out.println("星期二");
}
if (number == 3) {
System.out.println("星期三");
}
if (number == 4) {
System.out.println("星期四");
}
if (number == 5) {
System.out.println("星期五");
}
if (number == 6) {
System.out.println("星期六");
}
if (number == 7) {
System.out.println("星期日");
}
}
}
}
复制代码
作者:
qq884024720
时间:
2013-12-30 20:55
你可以先用hasNextInt()这个方法,先判断输入的是不是一个整形数字
作者:
浮出一个美
时间:
2013-12-30 21:12
写了一段代码给你,不知道对你是否有帮助
package com.heima;
import java.util.Scanner;
/**
* 输入数字1~7,输出对应的星期
* 非法输入则要求再次输入,直到正确为止
*/
public class Demo {
public static void main(String[] args) {
String[] week = new String[]{"星期一","星期二","星期三","星期四",
"星期五","星期六","星期天"};
System.out.println("请输入数字1~7:");
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
while(true){
if(input.length()!=1){//输入了多个字符
System.out.println("输入错误,你输入了多个字符,请输入数字1~7:");
input = sc.nextLine();
continue;
}
char ch = input.charAt(0);//得到输入的字符
if(ch<'1' || ch>'7'){
System.out.println("输入错误,请输入数字1~7:");
input = sc.nextLine();
continue;
}
//这的49先是减去ascii的值,然后,你知道,数组是从0开始的。
System.out.println("输入正确:"+week[ch-49]);
break;
}
}
}
复制代码
作者:
布鲁Go
时间:
2013-12-30 22:07
本帖最后由 布鲁Go 于 2013-12-30 23:01 编辑
。像这样数量不多的,一般不这么猛用 if 吧 ,应该换成switch或者查表法,就好像上面那个那样,至于出错,是因为没有try catch.我试着写了简练些的。。
import java.util.Scanner;
class Hello{
public static void main(String[] args) throws Exception
{
String[] week = {"" ,"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
System.out.println("请输入数字1~7:");
Scanner sc = new Scanner(System.in);
int num;
try {
num = sc.nextInt();
System.out.println(week[num]);
} catch (Exception e) {
System.out.println("请按提示输入,谢谢");
}
}
}
复制代码
作者:
布鲁Go
时间:
2013-12-30 22:16
布鲁Go 发表于 2013-12-30 22:07
。像这样数量不多的,一般不这么猛用if吧 ,应该换成switch或者查表法,就好像上面那个那样,至于出错,是 ...
哦。。不好意思,没细看你的名字,是练习if 语句来着。。我错了。。。o(╯□╰)o。。。
作者:
pray
时间:
2013-12-30 22:36
您好 你在定义了只能接受整型数据 所以会出错
把int类型改成String类型....把==改成.equals.
01.import java.util.;
02.public class IfTest {
03. public static void main(String[] args) {
04. Scanner sn=new Scanner(System.in);
05. String number=sn.nextLine();
06. if("1".equals(number)){
07. System.out.println("星期一");
08. }
09. if("2".equals(number)){
10. System.out.println("星期二");
11. }
12. if("3".equals(number)){
13. System.out.println("星期三");
14. }
15. if("4".equals(number)){
16. System.out.println("星期四");
17. }
18. if("5".equals(number)){
19. System.out.println("星期五");
20. }
21. if("6".equals(number)){
22. System.out.println("星期六");
23. }
24. if("7".equals(number)){
25. System.out.println("星期日");
26. }
27. else{
28. System.out.println("你输入的数字非法");
29. }
30. }
31. }
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2