案例,数字,英文判断

案例,数字,英文判断

案例:简易系统

功能:

"请选择功能:1添加员工,2,查询员工,3修改员工,4删除员工,5查询总员工,6退出系统"

查看代码

查看代码
 package shuzu;

import java.util.Scanner;

public class Zuoye_1 {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("欢迎使用系统");
        int [] nos=new int[2];
        String []  names=new String[2];
        int i=0;
        exitx: while (true){
            System.out.println("---------------------");
            System.out.println("请选择功能:1添加员工,2,查询员工,3修改员工,4删除员工,5查询总员工,6退出系统");
            System.out.println("---------------------");
            System.out.println();
            String flag=sc.next();
            switch (flag){
///////////////////添加
///////////////////员工信息保存数组,工号不能输入,自动生成递增,员工姓名 ,考虑扩容问题
                case "1":
                    if(i==nos.length){
                        //数组扩容
                        int[] noskuos=new int[nos.length+1];
                        for (int nosnum = 0; nosnum < nos.length; nosnum++) {
                            noskuos[nosnum]=nos[nosnum];
                        }
                        nos=noskuos;
                        //字符串扩容
                        String[] nameskuo=new String[names.length+1];
                        for (int name1=0;name1<names.length;name1++){
                            nameskuo[name1]=names[name1];
                        }
                        names=nameskuo;
                    }
                    System.out.println("请输入员工姓名");
                    String name=sc.next();
                    names[i]=name;
                    nos[i]=i+1;
                    i++;

                    //判断扩容

                    System.out.println("添加成功");
                    break;
//////////////////根据姓名(姓名可以重名),工号查询,二分查找
//////////////////子菜单,排序,根据工号倒序
                case "2":
                    System.out.println("员工工号   员工姓名");
                    System.out.println("1按id查看,2按姓名查看,3倒序查看员工");
                    String  selsectin=sc.next();
                    switch (selsectin){
                        case "1":
                            System.out.println("请输入要查询的员工号");
                            String sel_1;
                            cun_2:if(sc.hasNextInt()){
                                boolean cun_1=false;
                                sel_1=sc.next();
                                int ghid=Integer.parseInt(sel_1);
                                int first=0,ends=nos.length-1;
                                while(first<=ends){
                                    int s=(first+ends)/2;
                                    if(ghid>nos[s]){
                                        first=(first+ends)/2+1;
                                    }else  if(ghid<nos[s]){
                                        ends=(first+ends)/2-1;
                                    }else if(ghid==nos[s]){
                                        cun_1=true;
                                        System.out.print(nos[s]+"      "+names[s]+"\n");
                                        break cun_2;
                                    }
                                }
                                if(cun_1==false)
                                    System.out.println("查无此人");

                            }else{
                                System.out.println("输入错误");
                            }
                            break;
                        case "2":
                            System.out.println("请输入要查询的员工姓名");
                            String namese_1=sc.next();
                            boolean cunname=false;
                            for (int na=0;na<names.length;na++){
                                if(names[na].equals(namese_1)){
                                    cunname=true;
                                    System.out.print(nos[na]+"      "+names[na]+"\n");
                                }
                            }
                            if(cunname==false)
                                System.out.println("查无此人");
                            break;
                        case "3":
                            System.out.println("员工工号   员工姓名");
                            if(nos[0]==0){//没有数据
                                System.out.println("无");
                            }else {
                                p:for (int j = nos.length-1; j >=0 ; j--) {
                                    if(nos[j]==0)
                                        continue p;
                                    System.out.print(nos[j]+"            "+names[j]+"\n");

                                }
                            }
                            break;
                        default:
                            System.out.println("输入错误");break;
                    }
                    break;
//////////////////////////修改,输入员工号,更改员工名,确认在不在
                case "3":
                    if(nos[0]==0){
                                System.out.println("没有可修改的员工");
                    }else
                    {
                                System.out.println("请输入要修改的员工的员工号");
                                String changes;
                                if(sc.hasNextInt()){
                                        //确认员工是否存在
                                        changes=sc.next();
                                        int change=Integer.parseInt (changes);
                                        boolean exis=false;
                                        for (int ex=0;ex<nos.length;ex++) {
                                                if (change == nos[ex]) {
                                                    exis=true;
                                                } else if (change == 0) {
                                                    exis=false;
                                                }
                                        }
                                        if(exis){
                                                System.out.println("请输入要修改的姓名");
                                                String changename = sc.next();
                                                names[change - 1] = changename;
                                                System.out.println("修改成功");
                                        }else{
                                                System.out.println("员工不存在");
                                        }
                                }else {
                                            System.out.println("输入错误");
                                }

                    }
                    break;
//////////////////////////////////删除
                case "4":
                    if(nos[0]==0){
                        System.out.println("没有可删除的员工");
                    }else
                    {
                        System.out.println("请输入删除员工的工号");
                        String del;
                        if(sc.hasNextInt()){
                            //确认员工是否存在
                            del=sc.next();
                            int change=Integer.parseInt (del);
                            boolean exdel=false;
                            for (int ex=0;ex<nos.length;ex++) {
                                if (change == nos[ex]) {
                                    exdel=true;
                                } else if (change == 0) {
                                    exdel=false;
                                }
                            }
                            if(exdel){
                                System.out.println("请输入要删除的姓名");
                                changenos:for(int de=change;de<nos.length;de++){
//                                    if(nos[de]==0)
//                                        break changenos;
                                    nos[de-1]=nos[de];
                                }
                                nos[nos.length-1]=0;
                                changenames: for(int de=change;de<names.length;de++){
//                                    if(names[de]==null)
//                                        break changenames;
                                    names[de-1]=names[de];
                                }
                                names[names.length-1]=null;
                                System.out.println("删除成功");
                            }else{
                                System.out.println("员工不存在");
                            }
                        }else {
                            System.out.println("输入错误");
                        }

                    }
                    break;
//////////////////全体员工
                case "5":
                    System.out.println("员工工号   员工姓名");
                    System.out.println("-----------------------");
                    if(nos[0]==0){//没有数据
                        System.out.println("无");
                    }else {
                        p:for (int j = 0; j < nos.length; j++) {
                            if(nos[j]==0)
                                break p;
                            System.out.print(nos[j]+"            "+names[j]+"\n");

                        }
                    }
                    break;
                default:
                    System.out.println("输入错误");break;
/////////////////////退出系统
                case "6":
                    break  exitx;

            }
        }



    }
}

 

 

数组在指定位置添加:

查看代码
 
        int a[]=new int[]{1,2,3,4,5,6,7};
        Scanner sc=new Scanner(System.in);
        int x=sc.nextInt();
        int[] newa=new int[a.length+1];
        for (int i = 0; i < a.length; i++) {
            newa[i]=a[i];
        }
        a=newa;
        System.out.println("请输入插入位置");
        int in=sc.nextInt();
        for (int i=a.length-1;i>=in;i--){
            a[i]=a[i-1];
        }
        a[in-1]=x;
        for (int i : a) {
            System.out.print(i+" ");
        }

方式二:(ArrayList源码)

查看代码
 package com.jsoft.afternoon;

import java.util.Arrays;
import java.util.Scanner;

public class Ch04 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int [] arr = new int[]{1,2,3,4,5};
        // 扩容
        int [] newArr = new int[arr.length * 2];

        for (int j = 0; j < arr.length; j++) {
            newArr[j] = arr[j];
        }
        arr = newArr;
        main:while(true){
            System.out.println("请输入要插入数据的下标:");
            int index = sc.nextInt();
            System.out.println("请输入要插入的数据:");
            int num = sc.nextInt();
        /*
            1.因为数组已满,需要扩容
            2.找到要插入的数据的位置
            3.插入位置后面的数据需要向后移位
         */
            // 定义一个临时变量,存储原来index位置的元素
//        int temp = arr[index];
//        // 把要插入的数存到了指定的位置
//        arr[index] = num;
//        // 原来位置的后面的那个数向后移一位
//        arr[index + 2] = arr[index + 1];
//        arr[index + 1] = temp;
            // 要插入的位置的原始数据保存起来
            int temp = arr[index];
            // 把要插入的数据放到指定位置
            arr[index] = num;
            //判断要移位的数据的个数
            for (int i = 1; i < arr.length - index; i++) {
                arr[arr.length - i] = arr[arr.length - 1 - i];
            }
            arr[index + 1] = temp;
            System.out.println("现在数组为:" + Arrays.toString(arr));
            System.out.println("是否继续添加:1、是   2、否");
            String flag = sc.next();
            switch (flag){
                case "1":
                    continue;
                case "2":
                    System.out.println("当前数组为:" + Arrays.toString(arr));
                    break main;
//                    System.exit(-1);
            }
        }

    }
}

 

 

判断输入是否为数字:

利用Scanner的hasNestInt()方法根据输入的内容判断输入是否为数字(整形,字符)

        int[] arr=new int[]{4,58,3,5,7,0};
        int num1=sc.nextInt();
        if(sc.hasNextInt()){
            num=sc.nextInt();
            System.out.println(num);

        }else{
            System.out.println("不是数字");
        }

 

判断字符串中的数字:

把字符串分解为字符数组(str.toCharArray();),利用Character.isDigit();方法判断是否为数字

 public static void main(String[] args) {
        String str = "abc123";
        char num[] = str.toCharArray();//把字符串转换为字符数组
        StringBuffer stringBuffer1 = new StringBuffer();
        StringBuffer stringBuffer2 = new StringBuffer();
        for (int i = 0; i < num.length; i++) {
            // 判断输入的数字是否为数字还是字符
            if (Character.isDigit(num[i])) {
                stringBuffer1.append(num[i]);// 如果输入的是数字,把它赋给stringBuffer1
            } else {
                stringBuffer2.append(num[i]);// 如果输入的是字符,把它赋给stringBuffer2
            }
        }
        System.out.println(stringBuffer1);
        System.out.println(stringBuffer2);

    }

 

数据类型判断是否为数字:

转换字符串类型变为整形,判断是否为数字

  public static void main(String[] args) {
        String str = "abc123";
        String str2 = "123";
        System.out.println(isDigit(str));
        System.out.println(isDigit(str2));
    }

    /**
     * 使用类型转换判断是否为数字
     */
    public static boolean isDigit(String str) {
        try {
            Integer.valueOf(str);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

 

正则表达式判断是否为数字:

   String str = "1";
    String str2 = "a";
    //+表示1个或多个(如"3"或"225"),*表示0个或多个([0-9]*)(如""或"1"或"22"),?表示0个或1个([0-9]?)(如""或"7")
    System.out.println(str.matches("[0-9]+"));
    System.out.println(str2.matches("[0-9]+"));

 

正则表达式判断:

 // 纯数字
    private static String DIGIT_REGEX = "[0-9]+";
    // 含有数字
    private static String CONTAIN_DIGIT_REGEX = ".*[0-9].*";
    // 纯字母
    private static String LETTER_REGEX = "[a-zA-Z]+";
    // 包含字母
    private static String CONTAIN_LETTER_REGEX = ".*[a-zA-z].*";
    // 纯中文
    private static String CHINESE_REGEX = "[\u4e00-\u9fa5]";
    // 仅仅包含字母和数字
    private static String LETTER_DIGIT_REGEX = "^[a-z0-9A-Z]+$";
    private static String CHINESE_LETTER_REGEX = "([\u4e00-\u9fa5]+|[a-zA-Z]+)";
    private static String CHINESE_LETTER_DIGIT_REGEX = "^[a-z0-9A-Z\u4e00-\u9fa5]+$";

 

 

 

posted @ 2022-07-16 08:46  一只神秘的猫  阅读(74)  评论(0)    收藏  举报