A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© java陈辉 中级黑马   /  2013-12-30 19:28  /  1719 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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("你输入的数字非法");
            }
     }
}

































评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

8 个回复

倒序浏览
本帖最后由 段光宇 于 2013-12-30 19:50 编辑

这个可以用try/catch来解决,通过catch捕捉输入错误并定义合理的错误输出。
代码如下:
  1. public class test {
  2.     public static void main(String[] args) {
  3.     while(true){
  4.            try {
  5.                    Scanner sn=new Scanner(System.in);
  6.                      int number=sn.nextInt();
  7.                    if(number==1){
  8.                     System.out.println("星期一");
  9.             }
  10.             if(number==2){
  11.                     System.out.println("星期二");
  12.             }
  13.             if(number==3){
  14.                     System.out.println("星期三");
  15.             }
  16.             if(number==4){
  17.                     System.out.println("星期四");
  18.             }
  19.             if(number==5){
  20.                     System.out.println("星期五");
  21.             }
  22.             if(number==6){
  23.                     System.out.println("星期六");
  24.             }
  25.             if(number==7){
  26.                     System.out.println("星期日");
  27.             }
  28.             if(number>7 || number<1){
  29.                     System.out.println("你输入的数字非法");
  30.             }
  31.            }
  32.            catch (Exception e) {
  33.             System.out.println("只能输入数字!请重新输入:");
  34.            }
  35.     }
  36. }
  37. }
复制代码



回复 使用道具 举报
  1. import java.util.*;
  2. public class IfTest {
  3.          public static void main(String[] args) {
  4.                  Scanner sn=new Scanner(System.in);
  5.              String number=sn.nextLine();
  6.              if("1".equals(number)){
  7.                      System.out.println("星期一");
  8.              }
  9.              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. }
复制代码

把int类型改成String类型....把==改成.equals.
这样就哦了.
回复 使用道具 举报
  1. package com.mth.test;

  2. import java.util.Scanner;

  3. /*
  4. * 验证输入:
  5. * 正则表达式 来判断输入的是否合法(除了1-7其他都是错误的即使输入11 22也是错误的)
  6. * 输入over停止输入
  7. *
  8. *
  9. * */
  10. public class IfTest {
  11.         public static void main(String[] args) {

  12.                 while (true) {
  13.                         System.out.println("请输入日期, 出入 over 停止:");
  14.                         Scanner sn = new Scanner(System.in);
  15.                         String str = sn.nextLine();
  16.                         if ("over".equals(str)) {
  17.                                 break;
  18.                         }
  19.                         String regex = "[1-7]";
  20.                         boolean b = str.matches(regex);
  21.                         int number = 0;
  22.                         if (b) {
  23.                                 number = Integer.parseInt(str);
  24.                         } else {
  25.                                 System.out.println("输入错误 请输入数字1-7");
  26.                                 continue;
  27.                         }

  28.                         if (number == 1) {
  29.                                 System.out.println("星期一");
  30.                         }
  31.                         if (number == 2) {
  32.                                 System.out.println("星期二");
  33.                         }
  34.                         if (number == 3) {
  35.                                 System.out.println("星期三");
  36.                         }
  37.                         if (number == 4) {
  38.                                 System.out.println("星期四");
  39.                         }
  40.                         if (number == 5) {
  41.                                 System.out.println("星期五");
  42.                         }
  43.                         if (number == 6) {
  44.                                 System.out.println("星期六");
  45.                         }
  46.                         if (number == 7) {
  47.                                 System.out.println("星期日");
  48.                         }

  49.                 }
  50.         }
  51. }
复制代码
回复 使用道具 举报
你可以先用hasNextInt()这个方法,先判断输入的是不是一个整形数字
回复 使用道具 举报
写了一段代码给你,不知道对你是否有帮助
  1. package com.heima;

  2. import java.util.Scanner;

  3. /**
  4. * 输入数字1~7,输出对应的星期
  5. * 非法输入则要求再次输入,直到正确为止
  6. */
  7. public class Demo {

  8.         public static void main(String[] args) {
  9.                 String[] week = new String[]{"星期一","星期二","星期三","星期四",
  10.                                 "星期五","星期六","星期天"};
  11.                 System.out.println("请输入数字1~7:");
  12.                 Scanner sc = new Scanner(System.in);
  13.                 String input = sc.nextLine();
  14.                 while(true){
  15.                         if(input.length()!=1){//输入了多个字符
  16.                                 System.out.println("输入错误,你输入了多个字符,请输入数字1~7:");
  17.                                 input = sc.nextLine();
  18.                                 continue;
  19.                         }
  20.                         char ch = input.charAt(0);//得到输入的字符
  21.                         if(ch<'1' || ch>'7'){
  22.                                 System.out.println("输入错误,请输入数字1~7:");
  23.                                 input = sc.nextLine();
  24.                                 continue;
  25.                         }
  26.                         //这的49先是减去ascii的值,然后,你知道,数组是从0开始的。
  27.                         System.out.println("输入正确:"+week[ch-49]);
  28.                         break;
  29.                        
  30.                 }
  31.         }

  32. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 布鲁Go 于 2013-12-30 23:01 编辑

。像这样数量不多的,一般不这么猛用  if   吧 ,应该换成switch或者查表法,就好像上面那个那样,至于出错,是因为没有try catch.我试着写了简练些的。。
  1. import java.util.Scanner;

  2. class Hello{
  3.         public static void main(String[] args) throws Exception
  4.         {
  5.                 String[] week = {"" ,"星期一","星期二","星期三","星期四","星期五","星期六","星期天"};
  6.                 System.out.println("请输入数字1~7:");
  7.                 Scanner sc = new Scanner(System.in);
  8.                 int num;
  9.                                 try {
  10.                                         num = sc.nextInt();
  11.                                         System.out.println(week[num]);
  12.                                 } catch (Exception e) {
  13.                                         System.out.println("请按提示输入,谢谢");                                       
  14.                                 }                              
  15.                 }
  16.         }
复制代码
回复 使用道具 举报
布鲁Go 发表于 2013-12-30 22:07
。像这样数量不多的,一般不这么猛用if吧 ,应该换成switch或者查表法,就好像上面那个那样,至于出错,是 ...

哦。。不好意思,没细看你的名字,是练习if 语句来着。。我错了。。。o(╯□╰)o。。。
回复 使用道具 举报
pray 高级黑马 2013-12-30 22:36:05
9#
您好 你在定义了只能接受整型数据 所以会出错
把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. }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马