java编程,菜鸟的小问题

用eclipse写一段程序实现输入1显示1月输入2显示2月。怎么设置当输入为字母时提示“输入有误!”在线急等!!

import java.util.Scanner;

public class ddsds {

public static void main(String[] args) {

    Scanner  sc=new Scanner(System.in);
    System.out.println("请输入一个月份");
    String s=sc.next();
    if(s.matches("[0-9]{2}||[1-9]")){  //判断输入的信息为1位或2位的数字
            int i=Integer.parseInt(s);
            if(i>=1&&i<=12){
                    System.out.println(s+"月");
            }else{
                System.out.println("输入的月份不对");
            }
    }else{
        System.out.println("请输入数字格式的月份");
    }
}

}

定义一个数组int[12] date={1,2,3,4,5,6,7,8,9,10,11,12};public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);
int[] dates = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
String answer = "N";
do {
boolean flag = true;
System.out.println("请输入月份");
int date = sc.nextInt();
for (int i = 0; i < dates.length; i++) {
if (date == dates[i]) {
flag = false;
}
}
if (flag) {
System.out.println("输入的月份不对");
} else {
System.out.println("输入的月份为" + date + "月");
flag = true;
}
System.out.println("是否退出输入月份 Y/N");
answer = sc.next();
} while ("N".equals(answer));
}

我觉得这样就可以了。 int month = scanner.nextInt(); if (month >= 1 || month <= 12) {} else {System.out.println("输入有误")}

Scanner scanner = new Scanner(System.in);
while(true){
String input = scanner.next();
int month = -1;
try {
month = Integer.parseInt(input);
if (month >= 1 && month <= 12) {
System.out.println(month+"月");
} else{
System.out.println("不存在该月");
}
} catch (Exception e) {
System.out.println("输入有误");
}

}