第三周学习日历
这一周在练车,感觉练学车好难...
在空余时间我也学习了Java的一些知识,在学习中自己敲了一些代码记录下来...
这周最大的进步是自己根据要求写了一个学生管理系统,虽然之前用C++写过类似的,但是用一门新的语言,有不同的成就感>_<
7月15日参加了睿康的编程赛 写出来3题半 1000多名 不知道能不能拿奖 感觉自己花200块白坐了俩小时
算法与数据结构这周没学习,感觉自己第一周定的计划也泡汤了 哈哈 没事
键盘录入
1.
//nextInt() 接收整数
//nextDouble() 接收小数
//next() 接收字符串--遇到空格,制表符,回车就停止接收
2.
//nextLine();接受字符串--遇到回车才会停止
//
package Car;
public class Car {
private String brand;
private int price;
private String color;
//默认构造
public Car() {
}
//有参构造
public Car(String brand, int price, String color) {
this.brand = brand;
this.price = price;
this.color = color;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public void showCarInfo(){
System.out.println(this.brand + ' ' + this.color + ' ' + this.price);
}
}
package Car;
import java.util.Scanner;
public class CarTest {
public static void main(String[] args){
Car[] arr = new Car[3];
Scanner sc = new Scanner(System.in);
for (int i = 0; i < arr.length; i++) {
Car c = new Car();
System.out.println("请输入车的品牌");
String brand = sc.next();
c.setBrand(brand);
System.out.println("请输入车的颜色");
String color = sc.next();
c.setColor(color);
System.out.println("请输入车的价格");
int price = sc.nextInt();
c.setPrice(price);
arr[i] = c;
}
for (int i = 0; i < arr.length; i++) {
arr[i].showCarInfo();
}
}
}
package Stu;
public class Student {
private int id;
private String name;
private int age;
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package Stu;
public class StudentTest {
public static void main(String[] args) {
Student[] arr = new Student[3];
Student stu1 = new Student(1001,"张三",20);
Student stu2 = new Student(1002,"李四",19);
arr[0] = stu1;
arr[1] = stu2;
Student stu3 = new Student(1003,"王五",21);
boolean flag = contains(arr,stu3);
if(flag){
System.out.println("学生编号重复!");
}
else{
int count = countArr(arr);
if(count < arr.length){
arr[count] = stu3;
}
else {
Student[] newArr = creatNewArr(arr);
newArr[count] = stu3;
arr = newArr;
}
}
printArr(arr);
}
public static int countArr(Student[] arr){
int count = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i] != null)count++;
else break;
}
return count;
}
public static boolean contains(Student[] arr,Student stu){
for (int i = 0; i < arr.length; i++) {
if(arr[i] != null){
if(arr[i].getId() == stu.getId()) return true;
}
}
return false;
}
public static void printArr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
if(arr[i] != null){
System.out.println(arr[i].getId() + " " + arr[i].getName() + " "+ arr[i].getAge());
}
}
}
public static Student[] creatNewArr(Student[] arr){
Student[] newArr = new Student[arr.length+1];
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i];
}
return newArr;
}
}
API(Application programming Interface):应用程序编程接口
简单理解就是别人以及写好的东西,直接用
Java API:指的就是JDK中提供的各种功能的Java类
字符串不可变,他们的值在创建后不能被更改
package StringTest;
//String 的构造函数
public class Str {
public static void main(String[] args) {
//1.直接赋值
String s1 = "abc";
System.out.println(s1);
//2.new关键字
String s2 = new String("abcd");
System.out.println(s2);
//3.根据字符数组,创建字符串对象
char[] chs = {'a','b','c','d','e'};
String s3 = new String(chs);
System.out.println(s3);
//4.根据字节数组,创建字符串对象
byte[] bytes = {97,98,99,100,101,102};
String s4 = new String(bytes);
System.out.println(s4);
}
}
字符串当使用树干引号直接赋值时,系统会检查该字符串在串池中是否存在
不存在:创建新的
存在:复用
String直接赋值会比较节省空间,
基本数据类型比较的是数据值,引用数据类型比较的是地址值
字符串比较
- boolean equals方法(要比较的字符串) 完全一样为true,否则为false
- boolean equalsIgnoreCase(要比较的字符串) 忽略大小写
package StringTest;
public class Equal {
public static void main(String[] args) {
String s1 = "abc";
String s2 = new String("abc");
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
System.out.println(s1.equalsIgnoreCase(s2));
}
}
**键盘录入的字符串是new出来的**
**遍历字符串**
* public char charAt(int index); 根据索引返回字符
* public int length(); 返回字符串的长度
* 字符串的长度 : 字符串对象.length()
package StringTest;
import java.util.Scanner;
public class StringDemo {
public static void main(String[] args) {
Scanner sc =new Scanner(System.in);
String s1 = sc.next();
for (int i = 0; i < s1.length(); i++) {
//字符串对象.charAt(index) 取出字符
System.out.println( s1.charAt(i) );
}
}
}
//字符串拼接
package StringTest;
public class StringDemo2 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
String res = arrToString(arr);
System.out.println(res);
}
public static String arrToString(int[] arr){
String result = "[";
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1){
result += arr[i] + "]";
}
else result += arr[i] + ", ";
}
return result;
}
}
package StringTest;
import java.util.Scanner;
//字符串反转
public class StringDemo3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
String result = "";
for(int i = s.length() - 1; i >= 0; i--){
result += s.charAt(i);
}
System.out.println(result);
}
}
package me.JavaStudy;
import java.util.Scanner;
//币值转换
public class Captial {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int number = sc.nextInt();
String result = "";
String[] arr = {"佰","什","万","仟","佰","什","元"};
while(number != 0){
result = captialNumber(number%10) + result;
number /= 10;
}
int count = result.length();
for(int i = count; i < 7; i++){
result = "零" + result;
}
String ans = "";
for (int i = 0; i < result.length(); i++) {
ans += result.charAt(i) + arr[i];
}
System.out.println(ans);
}
public static String captialNumber(int num){
String[] arr = {"零","壹","贰","叁","肆","伍","陆","柒","捌","玖"};
return arr[num];
}
}
package me.JavaStudy;
public class StringDemo1 {
public static void main(String[] args) {
String s = "16834331202";
String start = s.substring(0,3);
String end = s.substring(7);
String result = start + "****" + end;
System.out.println(result);
}
}
package me.JavaStudy;
//replace函数
public class StringDemo2 {
public static void main(String[] args) {
String s = "你好,我是张三";
System.out.println(s);
s = s.replace("张三","李四");
System.out.println(s);
}
}
StringBulider概述
StringBuilder 可以看成一个容器,创建之后里面的内容是可变的
- 作用: 提高字符串的操作效率
使用StringBuilder的两个场景:1.字符串拼接 2.字符串反转
StringBuilder的使用案例
package me.JavaStudy;
public class StringBuliderDemo1 {
public static void main(String[] args) {
//1.创建对象 因为StringBuilder是Java已经写好的类,打印对象是属性值,而不是地址值
StringBuilder sb = new StringBuilder("abcd");
//2.添加元素
sb.append(8.8888);
int len = sb.length();
System.out.println(len);
//反转操作
sb.reverse();
System.out.println(sb);
//添加字符串
sb.append("abcdefg");
//再把StringBuilder变回字符串
String s = sb.toString();
System.out.println(s);
}
}
回文字符串
package me.JavaStudy;
import java.util.Scanner;
public class StringBuliderDemo1 {
public static void main(String[] args) {
//链式编程
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串");
String s = sc.next();
String result = new StringBuilder().append(s).reverse().toString();
if(s.equals(result)){
System.out.println("YES");
}
else System.out.println("NO");
}
}
数组变成字符串
package me.JavaStudy;
public class StringBuliderDemo1 {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
System.out.println(arrToString(arr));
}
public static String arrToString(int[] arr){
StringBuilder sb = new StringBuilder("[");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1)sb.append(arr[i]).append("]");
else sb.append(arr[i]).append(", ");
}
return sb.toString();
}
}
StringJoiner概述
- StringJoiner跟StringBuilder一样,也可以看成一个容器,创建之后里面的内容可以改变
- 作用: 提高字符串的操作效率,而且代码编写特别简洁,但是市面上很少有人用(JDK8出现的)
StringJoiner没有空参构造
package me.JavaStudy;
import java.util.StringJoiner;
public class StringJoinerStudy {
public static void main(String[] args) {
StringJoiner sj = new StringJoiner("---");
sj.add("aaa").add("bbb").add("ccc");
System.out.println(sj);
StringJoiner sj2 = new StringJoiner(",","[","]");
sj2.add("1").add("2").add("3");
String s = sj2.toString();
System.out.println(s);
}
}
调整字符串内容
package me.JavaStudy;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
int len = a.length();
boolean flag = check(a,b);
if(flag) System.out.println("YES");
else System.out.println("NO");
}
public static boolean check(String a,String b){
for (int i = 0; i < a.length(); i++) {
a = rotate(a);
if(a.equals(b))return true;
}
return false;
}
public static String rotate(String s){
return s.substring(1) + s.charAt(0);
}
}
字符串相乘(非高精度)
package me.JavaStudy;
//字符串相乘(非高精度)
public class Test2 {
public static void main(String[] args) {
String s1 = "23456";
String s2 = "1111";
int a = 0 , b = 0;
for (int i = 0; i < s1.length(); i++) {
a = a * 10 + (s1.charAt(i) - '0');
}
for (int i = 0; i < s2.length(); i++) {
b = b * 10 + (s2.charAt(i) - '0');
}
System.out.println(a*b);
}
}
计算一句话中最后一个单词的长度
package me.JavaStudy;
import java.util.Scanner;
public class Test3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
int count = 0;
for(int i = s.length() - 1; i >= 0; i--){
if(s.charAt(i) == ' ')break;
count++;
}
System.out.println(count);
}
}
集合
集合和数组的对比:
- 长度:集合可以自由伸缩
- 存储类型: 数组都可以存,集合可以存引用数据类型,存基本数据类型需要变成包装类
ArrayList成员方法
package me.JavaStudy;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args){
//1.创建ArrayList
ArrayList<String> list = new ArrayList<>();
System.out.println(list);
//2.增删改查
list.add("aaa");
list.add("bbb");
list.add("ccc");
list.add("ddd");
System.out.println(list);
System.out.println("集合大小" + list.size());
list.remove("aaa");
System.out.println(list);
String s = list.remove(0);
System.out.println(s);
System.out.println(list);
list.set(0,"0.0");
System.out.println(list);
for (int i = 0; i < list.size(); i++) {
String s2 = list.get(i);
System.out.println(s2);
}
}
}
包装类
int -> Integer
char -> Character
其他数据类型都是首字母大写变成包装类
package me.JavaStudy;
import java.util.ArrayList;
public class ArrayListDemo {
public static void main(String[] args){
//1.创建ArrayList
ArrayList<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
System.out.println(list1);
ArrayList<Character>list2 = new ArrayList<>();
list2.add('a');
list2.add('b');
System.out.println(list2);
ArrayList<Double> list3 = new ArrayList<>();
list3.add(1.00213);
list3.add(1.0001212);
System.out.println(list3);
}
}
ArrayList接收自定义数据类型
package Test;
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListTest {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
for (int i = 0; i < 2; i++) {
Student s = new Student();
System.out.println("请输入学生姓名");
String name = sc.next();
System.out.println("请输入学生年龄");
int age = sc.nextInt();
s.setAge(age);
s.setName(name);
list.add(s);
}
for (int i = 0; i < list.size(); i++) {
list.get(i).showStudentInfo();
}
}
}
获取价格低于3000的手机
package Test;
import java.util.ArrayList;
public class ArrayListTest2 {
public static void main(String[] args) {
ArrayList<Phone> list = new ArrayList<>();
Phone p1 = new Phone("小米", 2999);
Phone p2 = new Phone("锤子",999);
Phone p3 = new Phone("苹果",8999);
list.add(p1);
list.add(p2);
list.add(p3);
ArrayList<Phone> p = getPhoneInfo(list);
for (int i = 0; i < p.size(); i++) {
p.get(i).showPhoneInfo();
}
}
public static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list){
ArrayList<Phone> result = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getPrice() < 3000){
result.add(list.get(i));
}
}
return result;
}
}
学生管理系统简易版
package StudentSystemTest;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Student> list = new ArrayList<>();
while(true){
showMenu();
String choose = sc.next();
switch (choose) {
case "1" -> addStudent(list);
case "2" -> removeStudent(list);
case "3" -> updateStudent( list);
case "4" -> showStudentInfo(list);
case "5" -> {
System.out.println("退出");
System.exit(0);
}
default -> System.out.println("输入有误,请重新输入");
}
}
}
//显示界面
public static void showMenu() {
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("-----------------------------");
System.out.println("请输入你的选择");
}
//添加学生
public static void addStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("需要添加学生的数量");
int count = sc.nextInt();
for (int i = 0; i < count; i++) {
System.out.println("输入学生id");
String id = sc.next();
System.out.println("输入学生姓名:");
String name = sc.next();
System.out.println("输入学生年龄:");
int age = sc.nextInt();
System.out.println("输入学生家庭住址:");
String address = sc.next();
Student s = new Student(id,name,age,address);
list.add(s);
}
System.out.println("添加成功!");
}
//删除学生
public static void removeStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("输入要删除的学生id:");
String id = sc.next();
boolean flag = idIsExist(list,id);
if(flag){
int index = getIndex(list,id);
list.remove(index);
System.out.println("删除成功!");
}
else System.out.println("删除失败!,id不存在!");
}
//修改学生
public static void updateStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("输入要修改的学生id");
String id = sc.next();
int index = getIndex(list,id);
if(index > -1){
System.out.println("输入学生id");
String sid = sc.next();
list.get(index).setId(sid);
System.out.println("输入学生姓名:");
String name = sc.next();
list.get(index).setName(name);
System.out.println("输入学生年龄:");
int age = sc.nextInt();
list.get(index).setAge(age);
System.out.println("输入学生家庭住址:");
String address = sc.next();
list.get(index).setAddress(address);
System.out.println("修改成功!");
}
else System.out.println("修改失败!,id不存在!");
}
//查询学生
public static void showStudentInfo(ArrayList<Student> list) {
for (int i = 0; i < list.size(); i++) {
list.get(i).showStudentInfo();
}
}
//判断id是否存在
public static boolean idIsExist(ArrayList<Student> list,String id){
int index = getIndex(list,id);
if(index > -1)return true;
return false;
}
//返回id对应的索引
public static int getIndex(ArrayList<Student> list,String id) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return i;
}
}
return -1;
}
}
学生管理系统升级版
package StudentSystemTest;
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void showStudentInfo(){
System.out.println(this.getId()+ " " + this.getName() + " "+this.getAge() + " " + this.getAddress());
}
/**
* 获取
* @return id
*/
public String getId() {
return id;
}
/**
* 设置
* @param id
*/
public void setId(String id) {
this.id = id;
}
}
package StudentSystemTest;
public class User {
private String username;
private String password;
private String idCard;
private String phoneNumber;
public User() {
}
public User(String username, String password, String idCard, String phoneNumber) {
this.username = username;
this.password = password;
this.idCard = idCard;
this.phoneNumber = phoneNumber;
}
/**
* 获取
* @return username
*/
public String getUsername() {
return username;
}
/**
* 设置
* @param username
*/
public void setUsername(String username) {
this.username = username;
}
/**
* 获取
* @return password
*/
public String getPassword() {
return password;
}
/**
* 设置
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* 获取
* @return idCard
*/
public String getIdCard() {
return idCard;
}
/**
* 设置
* @param idCard
*/
public void setIdCard(String idCard) {
this.idCard = idCard;
}
/**
* 获取
* @return phoneNumber
*/
public String getPhoneNumber() {
return phoneNumber;
}
/**
* 设置
* @param phoneNumber
*/
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
}
package StudentSystemTest;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<User> userList = new ArrayList<>();
loop : while(true){
showLogin();
String choose1 = sc.next();
switch(choose1){
case "1" ->
{
boolean is = login(userList);
if(is) break loop;
}
case "2" -> register(userList);
case "3" -> setPassword(userList);
default -> System.out.println("输入有误,请重新输入!");
}
}
ArrayList<Student> list = new ArrayList<>();
while(true){
showMenu();
String choose = sc.next();
switch (choose) {
case "1" -> addStudent(list);
case "2" -> removeStudent(list);
case "3" -> updateStudent( list);
case "4" -> showStudentInfo(list);
case "5" -> {
System.out.println("退出");
System.exit(0);
}
default -> System.out.println("输入有误,请重新输入");
}
}
}
//显示界面
public static void showMenu() {
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("-----------------------------");
System.out.println("请输入你的选择");
}
//添加学生
public static void addStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("需要添加学生的数量");
int count = sc.nextInt();
for (int i = 0; i < count; i++) {
System.out.println("输入学生id");
String id = sc.next();
System.out.println("输入学生姓名:");
String name = sc.next();
System.out.println("输入学生年龄:");
int age = sc.nextInt();
System.out.println("输入学生家庭住址:");
String address = sc.next();
Student s = new Student(id,name,age,address);
list.add(s);
}
System.out.println("添加成功!");
}
//删除学生
public static void removeStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("输入要删除的学生id:");
String id = sc.next();
boolean flag = idIsExist(list,id);
if(flag){
int index = getIndex(list,id);
list.remove(index);
System.out.println("删除成功!");
}
else System.out.println("删除失败!,id不存在!");
}
//修改学生
public static void updateStudent(ArrayList<Student> list){
Scanner sc = new Scanner(System.in);
System.out.println("输入要修改的学生id");
String id = sc.next();
int index = getIndex(list,id);
if(index > -1){
System.out.println("输入学生id");
String sid = sc.next();
list.get(index).setId(sid);
System.out.println("输入学生姓名:");
String name = sc.next();
list.get(index).setName(name);
System.out.println("输入学生年龄:");
int age = sc.nextInt();
list.get(index).setAge(age);
System.out.println("输入学生家庭住址:");
String address = sc.next();
list.get(index).setAddress(address);
System.out.println("修改成功!");
}
else System.out.println("修改失败!,id不存在!");
}
//查询学生
public static void showStudentInfo(ArrayList<Student> list) {
for (int i = 0; i < list.size(); i++) {
list.get(i).showStudentInfo();
}
}
//判断id是否存在
public static boolean idIsExist(ArrayList<Student> list,String id){
int index = getIndex(list,id);
if(index > -1)return true;
return false;
}
//返回id对应的索引
public static int getIndex(ArrayList<Student> list,String id) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return i;
}
}
return -1;
}
//显示登录界面
public static void showLogin(){
System.out.println("欢迎来到学生管理系统");
System.out.println("请选择操作1登录 2注册 3忘记密码");
System.out.println("请输入你的选择:");
}
//登录
public static boolean login(ArrayList<User> userList){
Scanner sc = new Scanner(System.in);
System.out.println("请输入用户名");
String username = sc.next();
int index = getUserIndex(userList,username);
if(index > -1){
int count = 3;
while (count != 0) {
System.out.println("请输入密码");
String password = sc.next();
while (true) {
String num = getRandomNumber();
System.out.println("你的验证码为:" + num);
System.out.println("请输入验证码:");
String inputNum = sc.next();
if (num.equals(inputNum)) {
break;
} else System.out.println("验证码错误!请重新输入");
}
if(password.equals(userList.get(index).getPassword())){
System.out.println("登录成功!");
return true;
}
else {
count--;
System.out.println("密码错误!请重新登录");
}
}
System.out.println("输入错误次数达到三次!无法继续输入");
return false;
}
else System.out.println("登陆失败!用户名不存在,请注册后再来尝试!");
return false;
}
//注册
public static void register(ArrayList<User> userList){
Scanner sc = new Scanner(System.in);
String username , p1 ,idcard ,phoneNumber;
while (true) {
System.out.println("请输入您的用户名");
username = sc.next();
if(usernameIsTrue(userList,username)){
break;
}
else System.out.println("创建失败!");
}
while (true) {
System.out.println("请输入密码");
p1 = sc.next();
System.out.println("请确认密码");
String p2 = sc.next();
if(p1.equals(p2)){
break;
}
else System.out.println("两次密码不一致!请重新输入");
}
while (true) {
System.out.println("请输入身份证号");
idcard = sc.next();
if(idcardIsTrue(idcard)){
break;
}
else System.out.println("身份证号不合法!请重新输入");
}
while (true) {
System.out.println("请输入手机号");
phoneNumber = sc.next();
if(phoneNumberIsTrue(phoneNumber)){
break;
}
else System.out.println("手机号不合法!请重新输入");
}
User newUser = new User(username,p1,idcard,phoneNumber);
userList.add(newUser);
System.out.println("注册成功!");
}
//忘记密码
public static void setPassword(ArrayList<User> userList){
Scanner sc = new Scanner(System.in);
System.out.println("输入用户名");
String username = sc.next();
int index = getUserIndex(userList,username);
if(index != -1){
System.out.println("输入您的身份证号");
String idcard = sc.next();
System.out.println("输入你的手机号");
String phoneNumber = sc.next();
if(userList.get(index).getIdCard().equals(idcard) && userList.get(index).getPhoneNumber().equals(phoneNumber)) {
while (true) {
System.out.println("输入新的密码");
String newPassword = sc.next();
System.out.println("确认密码");
String p = sc.next();
if (newPassword.equals(p)){
userList.get(index).setPassword(p);
System.out.println("修改成功!");
break;
}
else System.out.println("两次输入密码不一致!请重新输入");
}
}
else System.out.println("身份证号或手机号输入错误!");
}
else System.out.println("用户不存在!");
}
//判断身份证号码是否合法
public static boolean idcardIsTrue(String idcard){
if(idcard.length() != 18 || idcard.charAt(0) == '0')return false;
if(idcard.charAt(17) != 'x' && idcard.charAt(17)!='X' && idcard.charAt(17) < '0' && idcard.charAt(17) > '9'){
return false;
}
for (int i = 0; i < idcard.length() - 1; i++) {
if(idcard.charAt(i) < '0' && idcard.charAt(i) > '9')return false;
}
return true;
}
//判断手机号是否合法
public static boolean phoneNumberIsTrue(String phoneNumber){
if(phoneNumber.length() != 11 || phoneNumber.charAt(0) == 0)return false;
for (int i = 0; i < phoneNumber.length(); i++) {
if(phoneNumber.charAt(i) < '0' || phoneNumber.charAt(i) > '9')return false;
}
return true;
}
//判断用户名是否合法
public static boolean usernameIsTrue(ArrayList<User> userList,String username){
if(username.length() < 3){
System.out.println("用户名太短!");
return false;
}
if(username.length() > 15){
System.out.println("用户名太长!");
return false;
}
if(getUserIndex(userList,username) != -1){
System.out.println("用户名已存在!");
return false;
}
boolean flag1 = false , flag2 = true;
for (int i = 0; i < username.length(); i++) {
if(username.charAt(i) >= 'a' && username.charAt(i) <= 'z')flag1 = true;
if(username.charAt(i) < 48 || (username.charAt(i) > 57 && username.charAt(i)<64)
||(username.charAt(i)>90 && username.charAt(i) < 96)||username.charAt(i)>122){
flag2 = false;
}
}
if(flag1 && flag2) return true;
else if(flag1) System.out.println("用户名含有不法字符!");
else if(flag2) System.out.println("用户名不能全为数字!");
return false;
}
//返回存在用户名对应的索引
public static int getUserIndex(ArrayList<User> userList,String username){
for (int i = 0; i < userList.size(); i++) {
if(username.equals(userList.get(i).getUsername())){
return i;
}
}
return -1;
}
//生成随机验证码
public static String getRandomNumber(){
char[] ch = new char[52];
for (int i = 0; i < ch.length; i++) {
if(i <= 25){
ch[i] = (char)('a' + i);
}
else{
ch[i] = (char)('A' + i - 26);
}
}
StringBuilder result = new StringBuilder();
Random r = new Random();
for (int i = 0; i < 4; i++) {
int randomIndex = r.nextInt(ch.length);
result.append(ch[randomIndex]);
}
int randomNum = r.nextInt(10);
result.append(randomNum);
int randomIndex = r.nextInt(5);
StringBuilder ans = new StringBuilder();
int i = 0,now = 0;
while(ans.length() != 5){
if(now != randomIndex){
ans.append(result.charAt(i));
i++;
now++;
}
else{
ans.append(randomNum);
now++;
}
}
return ans.toString();
}
}
static
static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。
特点:
- 被该类所有对象共享
- 不属于对象,属于类
- 随着类的加载而加载,优先于对象存在
调用方式:
- 类名调用(推荐)
- 对象名调用
工具类
帮助我们做一些事情的,但是不描述任何事物的类
- 类名见名知意
- 私有化构造方法
一个工具类ArrayUtil
package me.JavaStudy;
public class ArrayUtil {
private ArrayUtil() {
}
//打印数组
public static void printArr(int[] arr){
System.out.print("[");
for (int i = 0; i < arr.length; i++) {
if(i == arr.length - 1)System.out.print(arr[i] + "]");
else System.out.print(arr[i] + ", ");
}
System.out.println();
}
//求平均值
public static double getAverage(double[] arr){
double aver = 0.0;
for (int i = 0; i < arr.length; i++) {
aver += arr[i];
}
return aver/arr.length;
}
}
继承
- java提供一个关键字expense。用这个关键词可以让一个类和另一个类建立继承关系
public class Student extends Person() {} - Stduent称为子类(派生类),Person称为父类(基类或者超类)
使用继承的好处
-
可以把多个子类中重复的代码抽取到父类中了。提高代码的复用性
-
子类可以在父类的基础上增加其他的功能,使子类更强大
-
java只支持单继承,不支持多继承,但支持多层继承
-
Java所有的类都直接或间接地继承object类
-
子类只能访问父类中非私有的成员
子类到底能继承父类中的哪些内容
- 构造方法(非私有 不能 private 不能)
- 成员变量 (非私有 能 private 能)
- 成员方法(虚方法表 能 否则不能)