Java 不知道哪个条件错了

public class Student{
    private String name;
    private String id;
    private String gender;
    private String clazz;
    private String major;
    public Student(String id){
        this.id=id;
    }
    public static boolean check(String id){
        if(id.length()!= 10){
            return false;
        }
        else{
            for(int i=0;i < id.length();i++){
                if( ! Character.isDigit(id.charAt(i))){
                    return false;
                }
                else{
                    String z=id.substring(5,7);
                    int y=Integer.parseInt(z);
                    if(y > 0 && y < 13){
                        return false;
                    }
                }
            }
        }
        return true;
    }
    public static void main(String[]args){
        String id="2019080301";
        System.out.println(Student.check(id));
        id="20190803012";
        System.out.println(Student.check(id));
        id="201a080308";
        System.out.println(Student.check(id));
        id="201908030b";
        System.out.println(Student.check(id));
        id="2019000303";
        System.out.println(Student.check(id));
        id="2019130304";
        System.out.println(Student.check(id));
        id="201913030";
        System.out.println(Student.check(id));
    }
}

打印结果是true false false false true true false
  1)id长度为10位 
    (2)id全部是数字字符
    (3)第5、6位表示学院,必须是01到12之间(可以等于01和12)
    id符合上述条件,返回true;否则返回false

题目要求

 

String z=id.substring(5,7);  // 问题1、如果要获取月份,应该是4,6   索引是从0开始的

int y=Integer.parseInt(z);

if(y > 0 && y < 13){ // 问题2、满足条件才是true 吧

return false;

}

 

// 问题3 这个代码应该分两个方法去做,一个判断是否满足都是数字,一个去判断月份是否满足(这个不需要循环判断)

id="20190803012";这个是11位了,返回假哦

id="201913030";这个是9位,也为假

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

if(y > 0 && y < 13){

 

return false;

这个条件写反了吧,应该是if(y<= 0 || y > =13) return false;这是检查月份有效性吧,不是1-12月就无效

String z=id.substring(5,7);要改为String z = id.substring(4,6)

public class Student{
	private String name;
	private String id;
	private String gender;
	private String clazz;
	private String major;
	public Student(String id){
		this.id = id;
	}
	public static boolean check(String id){
		if (id.length() != 10){
			return false;
		}
		else{
			for (int i = 0; i < id.length(); i++){
				if (!Character.isDigit(id.charAt(i))){
					return false;
				}
				else{
					String z = id.substring(4, 6);
					int y = Integer.parseInt(z);
					if (y <= 0 || y >= 13){
						return false;
					}
				}
			}
		}
		return true;
	}
	public static void main(String[]args){
		String id = "2019080301";
		System.out.println(Student.check(id));
		id = "20190803012";
		System.out.println(Student.check(id));
		id = "201a080308";
		System.out.println(Student.check(id));
		id = "201908030b";
		System.out.println(Student.check(id));
		id = "2019000303";
		System.out.println(Student.check(id));
		id = "2019130304";
		System.out.println(Student.check(id));
		id = "201913030";
		System.out.println(Student.check(id));
	}
}