首页 > 其他分享 >代码实操2

代码实操2

时间:2022-11-17 00:44:06浏览次数:35  
标签:String ++ 代码 System 实操 println true out

  • 11.16下午7点
  • 添加注册功能
import javax.naming.OperationNotSupportedException;
import java.util.ArrayList;
import java.util.Scanner;

public class useTest {
    public static void main(String[] args) {
        //创建用户类
        use use = new use();
        //集合记录用户名
        ArrayList<String> Aname = new ArrayList<>();
        //集合记录密码
        ArrayList<String> Apassword = new ArrayList<>();
        //集合记录身份证号码
        ArrayList<String> Acard = new ArrayList<>();
        //集合记录手机号码
        ArrayList<String> Aphone = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        //主界面
        while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");
            int i = sc.nextInt();
            switch (i) {
                case 1 -> System.out.println("登陆");
                case 2 -> Username(Aname,Apassword, Acard, Aphone);
                case 3 -> System.out.println("忘记密码");
                case 4 -> System.exit(0);
                default -> System.out.println("没有此选项");
            }
        }

    }
    public static void Username(ArrayList<String> Aname, ArrayList<String> Apassword, ArrayList<String> Acard, ArrayList<String> Aphone) {
        Scanner sc = new Scanner(System.in);
        //注册用户名
        while (true) {
            //键盘录入用户名
            int a = 0;
            System.out.println("请输入用户名");
            String name = sc.nextLine();
            //调用方法判断长度
            boolean length = length(name);
            //调用方法判断是否重复
            boolean repeat = repeat(Aname, name);
            //调用方法判断是否包含标点符号
            boolean combination1 = combination1(name);
            //
            boolean combination2 = combination2(name);
            //判断长度
            if (length) {
                System.out.println("用户名长度不符合要求,请重新输入");
            } else if (repeat) {
                System.out.println("用户名重复,请重新输入");
            } else if (combination1) {
                System.out.println("用户名不能包含标点符号等,请重新输入");
            } else if (combination2) {
                System.out.println("用户名不能为纯数字,请重新输入");
            } else {
                System.out.println("用户名输入正确");
                Aname.add(name);
                break;
            }
        }
        //注册密码
        while (true) {
            //键盘录入密码
            System.out.println("请输入密码");
            //输入第一遍密码
            String password1 = sc.next();
            System.out.println("请再次输入密码");
            //输入第二遍密码
            String password2 = sc.next();
            //将两次密码对比,一样的话提示密码注册成功,如果不一样就重新输入
            if (password1.equals(password2)) {
                System.out.println("密码注册成功");
                Apassword.add(password1);
                break;
            } else {
                System.out.println("两次输入的密码不同,请重新输入");
            }
        }
        //注册身份证号
        while (true) {
            System.out.println("请输入身份证号码");
            //键盘录入身份证号码
            String card = sc.next();
            //判断身份证的长度的是否为18,不是为true,是为false
            boolean b = card.length() != 18;
            //判断身份证的第一位是否为0,不是为true,是为false
            boolean b1 = card.charAt(0) != '0';
            //调用方法判断前17位是否为纯数字
            boolean num = num(card);
            //判断最后一位是否在0~9,x,X的范围内
            boolean last = last(card);
            if (b) {
                System.out.println("身份证长度错误,请重新输入");
            } else if (!b1) {
                System.out.println("身份证第一位格式错误,请重新输入");
            } else if (num) {
                System.out.println("身份证前17位格式错误,请重新输入");
            } else if (last) {
                System.out.println("身份证最后一位格式错误,请重新输入");
            } else {
                System.out.println("身份证录入成功!");
                Acard.add(card);
                break;
            }

        }
        //注册手机号
        while (true) {
            //键盘录入手机号
            System.out.println("请输入你的手机号码");
            String phone = sc.next();
            boolean b = phone.length() != 11;//相等为false,不相等为true
            boolean b1 = phone.charAt(0) != '0';//相等为false,不相等为true
            boolean digital = digital(phone);
            if (b) {
                System.out.println("手机号长度输入错误,请重新输入");
            } else if (!b1) {
                System.out.println("手机号第一位不能为0,请重新输入");
            } else if (digital) {
                System.out.println("手机号只能为纯数字");
            } else {
                System.out.println("手机号验证成功");
                Aphone.add(phone);
                break;
            }
        }
        System.out.println("账号注册成功!!!");
        System.out.println("请记住您的账户密码!!!");
    }


    //判断用户名的长度是否符合要求
    public static boolean length(String name) {
        if (name.length() > 15 || name.length() < 3) {
            return true;
        }
        return false;
    }

    //判断用户名是否存在  repeat-重复
    public static boolean repeat(ArrayList<String> Aname, String name) {
        //利用循环遍历用户名集合判断用户名是否重复
        for (int i = 0; i < Aname.size(); i++) {
            boolean panduan = Aname.get(i).equals(name);
            if (panduan) {
                System.out.println("用户名重复,请重新输入");
                return true;
            }
        }
        return false;
    }

    //判断用户名的组合是否正确 组合=combination
    public static boolean combination1(String name) {
        //创建一个数组用来记录数字和字母,然后遍历和输入的用户名进行对比
        //如果用户名里有一个在数组中不存在,那么就输入错误,需要重新输入
        char[] zmsz = new char[62];
        char a = 'a' - 1;
        char A = 'A' - 1;
        char num = '0' - 1;
        //将需要的数据添加到数组中
        for (int i = 0; i < zmsz.length; i++) {
            if (i > 51) {
                num++;
                zmsz[i] = num;
            } else if (i > 25) {
                A++;
                zmsz[i] = A;
            } else {
                a++;
                zmsz[i] = a;
            }
        }
        //将数组装换成字符串
        String s = "";
        for (int i = 0; i < zmsz.length; i++) {
            s = s + zmsz[i] + "";
        }
        //利用循环嵌套,将name里的每一个字符进行对比
        int b;
        boolean equals = true;
        for (int i = 0; i < name.length(); i++) {
            b = 0;
            for (int n = 0; n < zmsz.length; n++) {
                //转换成字符串形式
                String c = name.charAt(i) + "";
                String s1 = s.charAt(n) + "";
                equals = c.equals(s1);
                if (!equals) {
                    //将用户名的每一个字符进行对比
                    //当用户名的字符和数组中的字符不同时,输出false,相同时输出true
                    //当输出false时,b++;
                    //如果字符存在'a'~'b',A~B,0~9中 那么就只会有61个false
                    b++;
                }
                //当b==62时,说明用户名中有字符不符合要求
                if (b == 62) {
                    //如果有不同的,就说明不符合要求,返回true
                    return true;
                }
            }
        }
        //符合要求,返回false
        return false;
    }

    //判断用户名的组合是否为纯数字 组合=combination
    public static boolean combination2(String name) {
        char a = 'a' - 1;
        char A = 'A' - 1;
        char[] zm = new char[52];
        //利用循环将字母的大小写添加到数组中
        for (int i = 0; i < zm.length; i++) {
            if (i > 25) {
                a++;
                zm[i] = a;
            } else {
                A++;
                zm[i] = A;
            }
        }
        //定义一个变量用来记录
        int num1 = 0;
        //先利用循环将name遍历出来,在嵌套zm(字母的大小写).length的循环
        //将name里面的字符和zm(字母的大小写)数组进行对比
        for (int i = 0; i < name.length(); i++) {
            for (int n = 0; n < zm.length; n++) {
                //将char转换为String
                String sz = zm[n] + "";
                String sn = name.charAt(i) + "";
                //对比 当name字符为字母时,输出true
                //当name字符为数字时,输出false
                boolean equals = sn.equals(sz);
                //当对比结果为true时,num1++
                if (equals) {
                    num1++;
                }
            }
        }
        //当num1为0时,代表用户名为纯数字,返回true
        if (num1 == 0) {
            return true;
        }
        return false;
    }

    //判断身份证前17位是否为纯数字
    public static boolean num(String card) {
        //添加数组用来记录0~9的数字
        char[] num = new char[10];
        char num1 = '0' - 1;
        //利用循环将数字添加到数组中
        for (int i = 0; i < num.length; i++) {
            num1++;
            num[i] = num1;
        }
        //利用循环将身份证的字符遍历出来
        //在嵌套循环将身份证的每一个字符和数字数组对比
        //定义变量用来记录
        for (int i = 0; i < card.length() - 1; i++) {
            int numer = 0;
            for (int n = 0; n < num.length; n++) {
                //对比,相同为true,不同为false
                boolean equals = (card.charAt(i) + "").equals(num[n] + "");
                //当输出为false时,numer++
                if (!equals) {
                    numer++;
                }
            }
            //因为身份证前17位只能是数字(0~9),所以正常来说numer只能等于9
            //当numer等于10时,代表前17位有字母,所以返回true
            if (numer == 10) {
                return true;
            }
        }
        return false;
    }

    //判断身份证的最后一位
    public static boolean last(String card) {
        //添加数组用来记录0~9的数字
        char[] num = new char[12];
        char num1 = '0' - 1;
        char x = 'x';
        char X = 'X';
        //定义变量用来记录
        int numer = 0;
        //利用循环将数字添加到数组中
        for (int i = 0; i < num.length; i++) {
            num1++;
            num[i] = num1;
            if (i == 10) {
                num[i] = x;
            } else if (i == 11) {
                num[i] = X;
            }
        }
        //将身份证最后一位转为字符串
        String s = card.charAt(card.length() - 1) + "";
        //利用循环判断
        for (int i = 0; i < num.length; i++) {
            //将身份证的最后一位拿出来和数组中的值对比,相同为true
            boolean equals = s.equals(num[i] + "");
            //当equals==true时,numer++
            if (equals) {
                numer++;
            }
        }
        //因为身份证只能是0~9和x以及X,所以当格式正确的时候
        //numer==1,当numer==0时表示,输入的身份证最后一位不在0~9,x,X的范围中,返回true
        if (numer == 0) {
            return true;
        } else {
            return false;
        }
    }

    //判断手机号是否都为数字 数字-digital
    public static boolean digital(String phone) {
        //添加数组 记录0~9的数字
        char num = '0' - 1;
        char[] num1 = new char[10];
        //利用循环将数字添加到数组中
        for (int i = 0; i < num1.length; i++) {
            num++;
            num1[i] = num;
        }
        //定义变量记录数据
        int num2 = 0;
        //利用循环将手机号码的字符遍历出来
        //在嵌套循环将手机号的每一个字符和数字数组对比
        for (int i = 0; i < phone.length(); i++) {
            for (int n = 0; n < num1.length; n++) {
                //将字符转换为字符串
                String s = phone.charAt(i) + "";
                String s1 = num1[n] + "";
                //对比,数据相同时为true
                boolean equals = s.equals(s1);
                //当equals的值为true时,num2++
                if (equals) {
                    num2++;
                }
            }
        }
        /*
        对比举例:
        5---1 false     当equals的结果为true时
        5---2 false     num2++
        5---3 false     因为如果手机号是纯数字的话,num2必定加一
        5---4 false     又因为手机号一共有11位
        5---5 true      所以,当num2<11时,表示手机号不是纯数字
        5---6 false     所以返回true
        5---7 false
        5---8 false
        5---9 false
        5---0 false
        */
        if (num2 < 11) {
            return true;
        }
        return false;
    }
}
  • 11.17晚上12.35
  • 添加登陆功能
  • 添加登陆后的界面
  • 添加加删改查学生
import javax.naming.OperationNotSupportedException;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class useTest {
    public static void main(String[] args) {
        //创建用户类
        use use = new use();
        //集合记录用户名
        ArrayList<String> Aname = new ArrayList<>();
        //集合记录密码
        ArrayList<String> Apassword = new ArrayList<>();
        //集合记录身份证号码
        ArrayList<String> Acard = new ArrayList<>();
        //集合记录手机号码
        ArrayList<String> Aphone = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        //主界面
        loop:while (true) {
            System.out.println("欢迎来到学生管理系统");
            System.out.println("请选择操作1登录 2注册 3忘记密码 4退出");
            String i = sc.next();
            switch (i) {
                case "1" ->{if (landing(Aname, Apassword)){
                    break loop;
                }
                }
                case "2" -> Username(Aname, Apassword, Acard, Aphone, use);
                case "3" -> System.out.println("忘记密码");
                case "4" -> System.exit(0);
                default -> System.out.println("没有此选项");
            }
        }
        //主菜单
        //创建集合记录学生信息
        ArrayList<Students> as = new ArrayList<>();
        //为外部循环取一个名字,这样就可以指定跳出这个外部循环
        loop:
        while (true) {
            //搭建主界面
            System.out.println("-------------欢迎来到蔡徐坤学院-------------");
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查询学生");
            System.out.println("5.退出");
            System.out.println("请输入你的选择");
            //键盘录入用户的选择
            String next = sc.next();
            //识别用户选项并执行
            switch (next) {
                //调用方法添加学生
                case "1" -> add(as);
                case "2" -> delete(as);
                case "3" -> modification(as);
                //调用方法查询学生
                case "4" -> query(as);
                case "5" ->{
                    /*方法1:指定跳出*/
                    break loop;
                    /*方法2
                    System.exit(0);//关闭虚拟机*/
                }
                default -> System.out.println("没有这个选择");
            }
        }
    }

    //登陆
    public static boolean landing(ArrayList<String> Aname, ArrayList<String> Apassword) {
        //定义boolean变量,初始值为false,当a==true时,登陆成功跳转到下一个页面
        boolean a = false;
        Scanner sc = new Scanner(System.in);
        //输入用户名
        System.out.println("请输入用户名");
        String name = sc.next();
        //调用方法将输入的用户名和数据库中的用户名进行对比
        boolean b = validation1(Aname, name);
        if (b) {System.out.println("此用户名还没有注册,请先注册");
        }//调用方法将输入的密码和数据库中的密码进行对比
        else if (validation2(Apassword)) {
            System.out.println("密码输入错误次数过多,账号已被锁定");
        } //调用方法,当返回值为false时,提示登陆成功
        else if (!yzm()){
            System.out.println("登陆成功!");
            a = true;
        }
            return a;
    }
        //登陆验证码
    public static boolean yzm(){
            Scanner sc = new Scanner(System.in);
            while (true) {
                //调用方法获得验证码
                String joint = joint();
                //输出验证码
                System.out.println(joint);
                //键盘录入验证码
                System.out.println("请输入验证码");
                String VerificationCode = sc.next();
                //对比 验证码错误时重新输入,直到输入正确后跳出循环,返回false
                boolean equals = joint.equals(VerificationCode);
                if (!equals){
                   System.out.println("验证码错误,请重新输入");
                }else {
                    break;
                }
            }
        return false;
    }
    //登陆验证码-将数字字母打乱进行拼接
    public static String joint(){
        Random r = new Random();
        //创建StringBuilder变量用来记录
        StringBuilder sb = new StringBuilder();
        //调用方法获得数组与字母的数字并把它们转换成字符串
        String english = new String(english());
        String digital = new String(digital());
        //利用循环获得4个随机字母并添加到StringBuilder里面
        for (int i = 0; i < 4; i++) {
            int n = r.nextInt(english.length());
             char c = english.charAt(n);
             sb.append(c);
        }
        //获得一个随机数字,并添加到StringBuilder里面
        int m = r.nextInt(digital.length());
        char c = digital.charAt(m);
        sb.append(c);
        //定义char变量用来拼接
       char a = ' ';
       //将StringBuilder变量转换为字符串然后转换成char数组
       String szzm = new String(sb);
        char[] chars = szzm.toCharArray();
        //获得随机数
        int i1 = r.nextInt(chars.length);
        //利用循环将数字字母的循序打乱,形成验证码
        for (int i = 0; i < szzm.length(); i++) {
            a = chars[i];
            chars[i] = chars[i1];
            chars[i1] = a;
        }
        //形成字符串返回
        String szzm1 = new String(chars);
        return szzm1;
    }
    //登陆验证码-将字母添加进数组
    public static char[] english() {
        //添加char数组用来添加字母
        char[] english = new char[52];
        //利用循环将字母添加到数组中
        for (int i = 0; i < english.length; i++) {
            if (i > 25) {
                english[i] = (char) (65 + (i - 26));
            } else {
                english[i] = (char) (97 + i);
            }
        }
        return english;
    }
    //登陆验证码-将数字添加进数组-digital-数字
    public static char[] digital(){
        //创建char数组用来添加数字
        char[] digital = new char[10];
        //利用循环将数字添加入数组中
        for (int i = 0; i < digital.length; i++) {
            digital[i] =(char)(48+i);
        }
        return digital;
    }
    //登陆验证密码 验证-validation
    public static boolean validation2(ArrayList<String> Apassword) {
        Scanner sc = new Scanner(System.in);
        //定义变量用来记录密码输入的次数
        int num1 = 0;
        //循环3次,有3次输入密码的机会
        for (int n = 2; n >= 0; n--) {
            System.out.println("请输入密码");
            //键盘录入密码
            String password = sc.next();
            //定义变量记录
            int num = 0;
            //循环遍历出集合中的密码
            for (int i = 0; i < Apassword.size(); i++) {
                String s = Apassword.get(i);
                //进行对比,当对比成功时,num++
                boolean equals = password.equals(s);
                if (equals) {
                    num++;
                }
            }
            //当num==0时,代表密码错误
            if (num == 0) {
                System.out.println("密码错误,你还有" + (n) + "次机会");
                num1++;
                //当num>0时代表密码匹配成功
            } else if (num > 0) {
                break;
            }
        }
        //当num1==3时代表密码次数达到上限,返回true,反之返回false
        if (num1 == 3) {
            return true;
        } else {
            return false;
        }
    }

    //登陆验证用户名 验证-validation
    public static boolean validation1(ArrayList<String> Aname, String name) {
        //定义boolean变量用来记录
        boolean ename;
        //定义变量用来记录true的次数
        int num = 0;
        //遍历用户名集合
        for (int i = 0; i < Aname.size(); i++) {
            //将输入的用户名进行对比,对比上了num++
            ename = name.equals(Aname.get(i));
            if (ename) {
                num++;
            }
        }
        //当num==0时,代表用户名集合里面没有,返回true,提示没有注册
        if (num == 0) {
            return true;
        }
        return false;
    }

    //注册
    public static void Username(ArrayList<String> Aname, ArrayList<String> Apassword, ArrayList<String> Acard, ArrayList<String> Aphone, use use) {
        Scanner sc = new Scanner(System.in);
        //注册用户名
        while (true) {
            //键盘录入用户名
            int a = 0;
            System.out.println("请输入用户名");
            String name = sc.nextLine();
            //调用方法判断长度
            boolean length = length(name);
            //调用方法判断是否重复
            boolean repeat = repeat(Aname, name);
            //调用方法判断是否包含标点符号
            boolean combination1 = combination1(name);
            //
            boolean combination2 = combination2(name);
            //判断长度
            if (length) {
                System.out.println("用户名长度不符合要求,请重新输入");
            } else if (repeat) {
                System.out.println("用户名重复,请重新输入");
            } else if (combination1) {
                System.out.println("用户名不能包含标点符号等,请重新输入");
            } else if (combination2) {
                System.out.println("用户名不能为纯数字,请重新输入");
            } else {
                System.out.println("用户名输入正确");
                Aname.add(name);
                use.setUsername(Aname.toString());
                break;
            }
        }
        //注册密码
        while (true) {
            //键盘录入密码
            System.out.println("请输入密码");
            //输入第一遍密码
            String password1 = sc.next();
            System.out.println("请再次输入密码");
            //输入第二遍密码
            String password2 = sc.next();
            //将两次密码对比,一样的话提示密码注册成功,如果不一样就重新输入
            if (password1.equals(password2)) {
                System.out.println("密码注册成功");
                Apassword.add(password1);
                use.setPassword(Apassword.toString());
                break;
            } else {
                System.out.println("两次输入的密码不同,请重新输入");
            }
        }
        //注册身份证号
        while (true) {
            System.out.println("请输入身份证号码");
            //键盘录入身份证号码
            String card = sc.next();
            //判断身份证的长度的是否为18,不是为true,是为false
            boolean b = card.length() != 18;
            //判断身份证的第一位是否为0,不是为true,是为false
            boolean b1 = card.charAt(0) != '0';
            //调用方法判断前17位是否为纯数字
            boolean num = num(card);
            //判断最后一位是否在0~9,x,X的范围内
            boolean last = last(card);
            if (b) {
                System.out.println("身份证长度错误,请重新输入");
            } else if (!b1) {
                System.out.println("身份证第一位格式错误,请重新输入");
            } else if (num) {
                System.out.println("身份证前17位格式错误,请重新输入");
            } else if (last) {
                System.out.println("身份证最后一位格式错误,请重新输入");
            } else {
                System.out.println("身份证录入成功!");
                Acard.add(card);
                use.setCard(Acard.toString());
                break;
            }

        }
        //注册手机号
        while (true) {
            //键盘录入手机号
            System.out.println("请输入你的手机号码");
            String phone = sc.next();
            boolean b = phone.length() != 11;//相等为false,不相等为true
            boolean b1 = phone.charAt(0) != '0';//相等为false,不相等为true
            boolean digital = digital(phone);
            if (b) {
                System.out.println("手机号长度输入错误,请重新输入");
            } else if (!b1) {
                System.out.println("手机号第一位不能为0,请重新输入");
            } else if (digital) {
                System.out.println("手机号只能为纯数字");
            } else {
                System.out.println("手机号验证成功");
                Aphone.add(phone);
                use.setPhoneNumber(Aphone.toString());
                break;
            }
        }
        System.out.println("账号注册成功!!!");
        System.out.println("请记住您的账户密码!!!");
    }


    //判断用户名的长度是否符合要求
    public static boolean length(String name) {
        if (name.length() > 15 || name.length() < 3) {
            return true;
        }
        return false;
    }

    //判断用户名是否存在  repeat-重复
    public static boolean repeat(ArrayList<String> Aname, String name) {
        //利用循环遍历用户名集合判断用户名是否重复
        for (int i = 0; i < Aname.size(); i++) {
            boolean panduan = Aname.get(i).equals(name);
            if (panduan) {
                System.out.println("用户名重复,请重新输入");
                return true;
            }
        }
        return false;
    }

    //判断用户名的组合是否正确 组合=combination
    public static boolean combination1(String name) {
        //创建一个数组用来记录数字和字母,然后遍历和输入的用户名进行对比
        //如果用户名里有一个在数组中不存在,那么就输入错误,需要重新输入
        char[] zmsz = new char[62];
        char a = 'a' - 1;
        char A = 'A' - 1;
        char num = '0' - 1;
        //将需要的数据添加到数组中
        for (int i = 0; i < zmsz.length; i++) {
            if (i > 51) {
                num++;
                zmsz[i] = num;
            } else if (i > 25) {
                A++;
                zmsz[i] = A;
            } else {
                a++;
                zmsz[i] = a;
            }
        }
        //将数组装换成字符串
        String s = "";
        for (int i = 0; i < zmsz.length; i++) {
            s = s + zmsz[i] + "";
        }
        //利用循环嵌套,将name里的每一个字符进行对比
        int b;
        boolean equals = true;
        for (int i = 0; i < name.length(); i++) {
            b = 0;
            for (int n = 0; n < zmsz.length; n++) {
                //转换成字符串形式
                String c = name.charAt(i) + "";
                String s1 = s.charAt(n) + "";
                equals = c.equals(s1);
                if (!equals) {
                    //将用户名的每一个字符进行对比
                    //当用户名的字符和数组中的字符不同时,输出false,相同时输出true
                    //当输出false时,b++;
                    //如果字符存在'a'~'b',A~B,0~9中 那么就只会有61个false
                    b++;
                }
                //当b==62时,说明用户名中有字符不符合要求
                if (b == 62) {
                    //如果有不同的,就说明不符合要求,返回true
                    return true;
                }
            }
        }
        //符合要求,返回false
        return false;
    }

    //判断用户名的组合是否为纯数字 组合=combination
    public static boolean combination2(String name) {
        char a = 'a' - 1;
        char A = 'A' - 1;
        char[] zm = new char[52];
        //利用循环将字母的大小写添加到数组中
        for (int i = 0; i < zm.length; i++) {
            if (i > 25) {
                a++;
                zm[i] = a;
            } else {
                A++;
                zm[i] = A;
            }
        }
        //定义一个变量用来记录
        int num1 = 0;
        //先利用循环将name遍历出来,在嵌套zm(字母的大小写).length的循环
        //将name里面的字符和zm(字母的大小写)数组进行对比
        for (int i = 0; i < name.length(); i++) {
            for (int n = 0; n < zm.length; n++) {
                //将char转换为String
                String sz = zm[n] + "";
                String sn = name.charAt(i) + "";
                //对比 当name字符为字母时,输出true
                //当name字符为数字时,输出false
                boolean equals = sn.equals(sz);
                //当对比结果为true时,num1++
                if (equals) {
                    num1++;
                }
            }
        }
        //当num1为0时,代表用户名为纯数字,返回true
        if (num1 == 0) {
            return true;
        }
        return false;
    }

    //判断身份证前17位是否为纯数字
    public static boolean num(String card) {
        //添加数组用来记录0~9的数字
        char[] num = new char[10];
        char num1 = '0' - 1;
        //利用循环将数字添加到数组中
        for (int i = 0; i < num.length; i++) {
            num1++;
            num[i] = num1;
        }
        //利用循环将身份证的字符遍历出来
        //在嵌套循环将身份证的每一个字符和数字数组对比
        //定义变量用来记录
        for (int i = 0; i < card.length() - 1; i++) {
            int numer = 0;
            for (int n = 0; n < num.length; n++) {
                //对比,相同为true,不同为false
                boolean equals = (card.charAt(i) + "").equals(num[n] + "");
                //当输出为false时,numer++
                if (!equals) {
                    numer++;
                }
            }
            //因为身份证前17位只能是数字(0~9),所以正常来说numer只能等于9
            //当numer等于10时,代表前17位有字母,所以返回true
            if (numer == 10) {
                return true;
            }
        }
        return false;
    }

    //判断身份证的最后一位
    public static boolean last(String card) {
        //添加数组用来记录0~9的数字
        char[] num = new char[12];
        char num1 = '0' - 1;
        char x = 'x';
        char X = 'X';
        //定义变量用来记录
        int numer = 0;
        //利用循环将数字添加到数组中
        for (int i = 0; i < num.length; i++) {
            num1++;
            num[i] = num1;
            if (i == 10) {
                num[i] = x;
            } else if (i == 11) {
                num[i] = X;
            }
        }
        //将身份证最后一位转为字符串
        String s = card.charAt(card.length() - 1) + "";
        //利用循环判断
        for (int i = 0; i < num.length; i++) {
            //将身份证的最后一位拿出来和数组中的值对比,相同为true
            boolean equals = s.equals(num[i] + "");
            //当equals==true时,numer++
            if (equals) {
                numer++;
            }
        }
        //因为身份证只能是0~9和x以及X,所以当格式正确的时候
        //numer==1,当numer==0时表示,输入的身份证最后一位不在0~9,x,X的范围中,返回true
        if (numer == 0) {
            return true;
        } else {
            return false;
        }
    }

    //判断手机号是否都为数字 数字-digital
    public static boolean digital(String phone) {
        //添加数组 记录0~9的数字
        char num = '0' - 1;
        char[] num1 = new char[10];
        //利用循环将数字添加到数组中
        for (int i = 0; i < num1.length; i++) {
            num++;
            num1[i] = num;
        }
        //定义变量记录数据
        int num2 = 0;
        //利用循环将手机号码的字符遍历出来
        //在嵌套循环将手机号的每一个字符和数字数组对比
        for (int i = 0; i < phone.length(); i++) {
            for (int n = 0; n < num1.length; n++) {
                //将字符转换为字符串
                String s = phone.charAt(i) + "";
                String s1 = num1[n] + "";
                //对比,数据相同时为true
                boolean equals = s.equals(s1);
                //当equals的值为true时,num2++
                if (equals) {
                    num2++;
                }
            }
        }
        /*
        对比举例:
        5---1 false     当equals的结果为true时
        5---2 false     num2++
        5---3 false     因为如果手机号是纯数字的话,num2必定加一
        5---4 false     又因为手机号一共有11位
        5---5 true      所以,当num2<11时,表示手机号不是纯数字
        5---6 false     所以返回true
        5---7 false
        5---8 false
        5---9 false
        5---0 false
        */
        if (num2 < 11) {
            return true;
        }
        return false;
    }
    //添加学生
    public static void add(ArrayList<Students> as) {
        //键盘录入
        Scanner sc = new Scanner(System.in);
        //创建学生对象
        Students s = new Students();
        String id = null;
        while (true) {
            //键盘录入学生的各项信息
            System.out.println("请输入id");
            id = sc.next();
            //调用方法判断学生id是否重复
            boolean pd = pd(as, id);
            if (pd){
                System.out.println("id重复,请重新输入");
            }else {
                s.setId(id);
                break;
            }
        }
        System.out.println("请输入年龄");
        int age = sc.nextInt();
        s.setAge(age);
        System.out.println("请输入姓名");
        String name = sc.next();
        s.setNeme(name);
        System.out.println("请输入住址");
        String zz = sc.next();
        s.setAddress(zz);
        //将学生对象添加到集合中
        as.add(s);
        System.out.println("录入成功");
    }
    //判断学生id是否重复
    public static boolean pd(ArrayList<Students> as,String id){
        //利用循环将集合中的数据提取出来,再将需要判断的数据进行对比
        for (int i = 0; i < as.size(); i++) {
            Students asget = as.get(i);
            //如果数据存在,返回true
            if (asget.getId().equals(id)){
                return true;
            }
        }
        //如果不存在,返回false
        return false;
    }
    //查找学生id并返回索引
    public static int pd2(ArrayList<Students> as,String id){
        //利用循环将集合中的数据提取出来,再将需要判断的数据进行对比
        for (int i = 0; i < as.size(); i++) {
            Students asget = as.get(i);
            //如果数据存在,返回索引i
            if (asget.getId().equals(id)){
                return i;
            }
        }
        //如果不存在,返回-1
        return -1;
    }
    //删除学生
    public static void delete(ArrayList<Students> as){
        //键盘录入需要删除的学生id
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要删除的学生id");
        String ID = sc.next();
        //调用方法 获得对应id的索引
        int pd = pd2(as, ID);
        //进行判断 如果存在,则删除成功,如果不存在则提示没有id
        if (pd>=0){
            as.remove(pd);
            System.out.println("删除成功");
        }else {
            System.out.println("没有此id");
        }

    }
    //修改学生
    public static void modification(ArrayList<Students> as){
        //键盘录入需要修改的学生的id
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要修改信息的学生的id");
        String id = sc.next();
        //调用方法获得需要修改的信息的索引
        int pd = pd2(as, id);
        //判断(索引不能<0如果<0,代表没有此学生的id)
        if (pd>=0){
            String ID = null;
            //利用循环进行判断,如果修改了的id和已有的id重复,提示修改失败,并重新输入
            while (true) {
                System.out.println("请输入新的学生id");
                ID = sc.next();
                //调用方法判断id是否重复
                boolean PD = pd(as, ID);
                if (PD){
                    System.out.println("修改的id重复,请重新输入id");
                }else {
                    //当修改的id和已有的id没有重复时,跳出循环
                    break;
                }
            }
            System.out.println("请输入新的学生年龄");
            int age = sc.nextInt();
            System.out.println("请输入新的学生姓名");
            String name = sc.next();
            System.out.println("请输入新的学生住址");
            String zz = sc.next();
            //将修改完的数据添加到学生对象,然后添加到集合
            Students stt = new Students(ID,name,age,zz);
            as.set(pd,stt);
        }else {
            System.out.println("没有此id");
        }
    }
    //查询学生
    public static void query(ArrayList<Students> as){
        //判断集合是否为空
        if (as.size()==0){
            System.out.println("当前无学生信息");
            return;
        }//打印目录
        System.out.println("id\t姓名\t年龄\t家庭住址");
        //遍历集合并打印学生信息
        for (int i = 0; i < as.size(); i++) {
            System.out.println(as.get(i).getId()+"\t"+as.get(i).getNeme()+"\t"+as.get(i).getAge()+"\t"+as.get(i).getAddress());
        }
    }
}

标签:String,++,代码,System,实操,println,true,out
From: https://www.cnblogs.com/Alluw/p/16898105.html

相关文章