案例,数字,英文判断
案例,数字,英文判断
案例:简易系统
功能:
"请选择功能: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]+$";

浙公网安备 33010602011771号