解决方案 »

  1.   

    Format.format();要放的是Date类型 你放的是string当然会异常啦
    你要用的应该是Format.parse()吧
      

  2.   

    同楼上可以直接用subbstring + "/"去做啊
      

  3.   

    现在我是用了你说的这个语句以后代码如下:
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    public class TTest {
    public static void main(String [] args) {
    Scanner input = new Scanner(System.in);
    SimpleDateFormat Format = new SimpleDateFormat("MM/dd");
    String birthday=" ";
    System.out.print("请输入会员的生日<月/日:00/00>:");
    birthday = input.next();//接收会员生日
    Date x = Format.parse(birthday);//这句话有问题,会报错,让我使用try\catch语句,或者在方法哪里声明有异常。



    System.out.println("会员生日是:"+birthday); }
    }我要实现的要求是:
    如果输入的格式不符合要求会继续要求重新输入,直至输入正确为止。怎么做,求程序。
      

  4.   

    现在我是用了你说的这个语句以后代码如下:
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    public class TTest {
    public static void main(String [] args) {
    Scanner input = new Scanner(System.in);
    SimpleDateFormat Format = new SimpleDateFormat("MM/dd");
    String birthday=" ";
    System.out.print("请输入会员的生日<月/日:00/00>:");
    birthday = input.next();//接收会员生日
    Date x = Format.parse(birthday);//这句话有问题,会报错,让我使用try\catch语句,或者在方法哪里声明有异常。



    System.out.println("会员生日是:"+birthday); }
    }我要实现的要求是:
    如果输入的格式不符合要求会继续要求重新输入,直至输入正确为止。怎么做,求程序。你想实现什么效果 是输入月份/日期 打印出"会员生日是:月份/日期"么 你只想验证他输入的是否符合你的格式么
      

  5.   

    现在我是用了你说的这个语句以后代码如下:
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    public class TTest {
    public static void main(String [] args) {
    Scanner input = new Scanner(System.in);
    SimpleDateFormat Format = new SimpleDateFormat("MM/dd");
    String birthday=" ";
    System.out.print("请输入会员的生日<月/日:00/00>:");
    birthday = input.next();//接收会员生日
    Date x = Format.parse(birthday);//这句话有问题,会报错,让我使用try\catch语句,或者在方法哪里声明有异常。



    System.out.println("会员生日是:"+birthday); }
    }我要实现的要求是:
    如果输入的格式不符合要求会继续要求重新输入,直至输入正确为止。怎么做,求程序。
    public static void main(String[] args) {
          Scanner input = new Scanner(System.in);
             String birthday=" ";
                 System.out.print("请输入会员的生日<月/日:00/00>:");
                 birthday = input.next();//接收会员生日
                 try{
                 if(birthday.indexOf("/")==-1||birthday.split("/").length!=2){
                  System.out.println("请输入正确格式,例如  01/01");
                 }else{
                  String [] b = birthday.split("/");
                  Integer.parseInt(b[0]);//非数字时抛出异常
                  Integer.parseInt(b[1]);
                     System.out.println("会员生日是:"+birthday);
                 }
                 }catch(Exception e){
                  System.out.println("请输入正确格式,例如  01/01,格式必须由‘数字/数字’组成");
                 }
                
    }这样不知道能不能满足你的需求 如果你只是想验证格式然后直接输出的话
      

  6.   

    用java.util.Calendar多好,不需要那么多转换。
      

  7.   

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    不需要这三个的。
    java7中日期的基本获取使用java.util.Calendar
      

  8.   

    其实我有想过用你的这个方法直接判断“/”这个符号的位置,但是我想用的是SimpleDateFormat("MM/dd")这个方式来定义日期的格式,但是我的程序还是有问题的,如果我输入“12/00”他也不会报错,所以很是纠结。
    public class TTest {
    public static void main(String [] args) throws ParseException {
    Scanner input = new Scanner(System.in);
    SimpleDateFormat Format = new SimpleDateFormat("MM/dd");//设置输入的日期的格式要求
    String birthday=" ";//接收输入的日期
    boolean flag = true;

    do{
    System.out.print("请输入会员的生日<月/日:00/00>:");
    birthday = input.next();//接收会员生日
    try{
    Date x = Format.parse(birthday);
    flag = birthday.equals(x)?true:false;
    }catch(ParseException e){
    System.out.println("生日形式输入错误!");
    System.out.println();
    }
    }while(flag);
    System.out.println("该会员生日是:"+birthday);

    int num;
    String password = " ";
    do{
    System.out.println("请输入会员密码:<6~10位>:");
    password = input.next();
    num = password.length();
    }while(num<6||num>10);

    System.out.println("该会员密码是:"+password);

    }
    }
      

  9.   

    public static void main(String[] args) throws Exception { Scanner scanner = new Scanner(System.in); String date = null; while (true) { System.out.print("输入生日[格式: 月/日]:"); date = scanner.next(); // 日期格式校验
    if (!date.matches("\\d{1,2}/\\d{1,2}")) {
    System.out.println("输入格式不正确!");
    continue;
    } String[] s = date.split("/"); int month = Integer.parseInt(s[0]);
    int day = Integer.parseInt(s[1]); if (month > 12 || month < 1) {
    System.out.println("错误的月份!");
    continue;
    } if (day > 31 || day < 1) {
    System.out.println("错误的日期!");
    continue;
    } if (month == 2 && day > 29) {
    System.out.println("错误的日期!");
    continue;
    } if ((month == 4 || month == 5 || month == 9 || month == 11) && day > 30) {
    System.out.println("错误的日期!");
    continue;
    } date = (month < 10 ? "0" + month : month) + "/" + (day < 10 ? "0" + day : day); break;
    } System.out.println(date);
    }代码啰嗦了点,lz将就着看
      

  10.   

    其实我有想过用你的这个方法直接判断“/”这个符号的位置,但是我想用的是SimpleDateFormat("MM/dd")这个方式来定义日期的格式,但是我的程序还是有问题的,如果我输入“12/00”他也不会报错,所以很是纠结。
    public class TTest {
    public static void main(String [] args) throws ParseException {
    Scanner input = new Scanner(System.in);
    SimpleDateFormat Format = new SimpleDateFormat("MM/dd");//设置输入的日期的格式要求
    String birthday=" ";//接收输入的日期
    boolean flag = true;

    do{
    System.out.print("请输入会员的生日<月/日:00/00>:");
    birthday = input.next();//接收会员生日
    try{
    Date x = Format.parse(birthday);
    flag = birthday.equals(x)?true:false;
    }catch(ParseException e){
    System.out.println("生日形式输入错误!");
    System.out.println();
    }
    }while(flag);
    System.out.println("该会员生日是:"+birthday);

    int num;
    String password = " ";
    do{
    System.out.println("请输入会员密码:<6~10位>:");
    password = input.next();
    num = password.length();
    }while(num<6||num>10);

    System.out.println("该会员密码是:"+password);

    }
    }
    你这样是不会异常的~因为即使你输入02/29 函数会自动转为03/01 所以不会出错的,用正则或一个个拆开来验证会比较严谨
      

  11.   

    private static List<String> DAY_31=Arrays.asList(new String[]{"1","3","5","7","8","10","12"});
    private static List<String> DAY_30=Arrays.asList(new String[]{"2","4","6","9","11"});
    public static void main(String[] args) {
    Scanner sc=new Scanner(System.in);
    SimpleDateFormat dateFormat=new SimpleDateFormat("MM/dd");
    while(true){
    System.out.println("请输入:");
    String str=sc.nextLine();
    try {
    dateFormat.parse(str);
    String mouth=str.split("/")[0];
    int day=Integer.parseInt(str.split("/")[1]);
    if(DAY_31.contains(mouth)&&(day>31||day<1)){
    System.out.println("格式错误,请重新输入");
    continue;
    }
    else if(DAY_30.contains(mouth)&&(day>30||day<1)){
    System.out.println("格式错误,请重新输入");
    continue;
    }
    else if(mouth.equals("2")&&(day>29||day<1)){
    System.out.println("格式错误,请重新输入");
    continue;
    }else{
    System.out.println("验证成功:"+str);
    break;
    }
    } catch (Exception e) {
    System.out.println("格式错误,请重新输入");
    continue;
    }
    }
    }还是很麻烦