集合ArrayList
创建集合的对象
<>泛型:限定集合中存储数据的类型
ArrayList list = new ArrayList();
//jdk7的写法,之后的写法省略后面的String
ArrayList list = new ArrayList<>();
ArrayList打印对象不是地址值,而是集合中存储数据内容,在展示的时候会拿[]把所有的数据包裹起来。
int是基本数据类型Integer是int的一个包装类(wrapper),他是类不是基本数据类型,他的内部其实包含一个int型的数据那为什么要用Integer呢,主要是因为面向对象的思想,因为Java语言是面向对象的,这也是它只所以流行的原因之一,对象封装有很多好处,可以把属性也就是数据跟处理这些数据的方法结合在一起,比如Integer就有parseInt()等方法来专门处理int型相关的数据,另一个非常重要的原因就是在Java中绝大部分方法或类都是用来处理类类型对象的,如ArrayList集合类就只能以类作为他的存储对象,而这时如果想把一个int型的数据存入list是不可能的,必须把它包装成类,也就是Integer才能被List所接受。所以Integer的存在是很必要的。
ArrayList<Integer> list = new ArrayList<>();
ArrayList<String> list= new ArrayList<>();
list.add("你好!");
list.add("我爱你!");
list.add("w ye s");
System.out.println(list);
//jdk5以后int 和Integer之间是可以互相转化的
添加学生信息到集合中:
public class StudentTest {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
// Student s1 = new Student("小王",1,99);
// Student s2 = new Student("小红",2,100);
// Student s3 = new Student("小明",3,97);
// list.add(s1);
// list.add(s2);
// list.add(s3);
for (int i = 0; i < 3; i++) {//添加学生信息
Student stu = new Student();
System.out.println("请输入学生姓名:");
String name = sc.next();
System.out.println("请输入学生学号:");
int id = sc.nextInt();
System.out.println("请输入学生分数:");
int score = sc.nextInt();
stu.setName(name);
stu.setId(id);
stu.setId(score);
list.add(stu);
}
for (int i = 0; i < 3; i++) {//遍历
Student stu = new Student();
stu = list.get(i);
System.out.println(stu.getName() + "," + stu.getId() + "," + stu.getScore());
}
}
}
查找用户信息:
public class SelectUser {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
String id;
System.out.println("请输入查找id:");
Scanner sc = new Scanner(System.in);
id = sc.next();
User u1 = new User("1", "xiaowang", "123456");
User u2 = new User("2", "xiaohong", "123456");
User u3 = new User("3", "xiaoluo", "123456");
list.add(u1);
list.add(u2);
list.add(u3);
int index = getIndex(list, id);
System.out.println("是否存在:" + contains(list, id) + "索引:" + (index));
}
private static int getIndex(ArrayList<User> list, String id) {
for (int i = 0; i < list.size(); i++) {
boolean b = list.get(i).getId().equals(id);
if (b) {
return i;
}
}
return -1;
}
private static boolean contains(ArrayList<User> list, String id) {
return getIndex(list, id) >= 0;
}
}
返回低于3000价格的手机:
public class PhoneTest {
public static void main(String[] args) {
ArrayList<Phone> list = new ArrayList<>();
ArrayList<Phone> result = new ArrayList<>();
Phone p1 = new Phone("小米", 1999);
Phone p2 = new Phone("华为", 2900);
Phone p3 = new Phone("苹果", 3999);
list.add(p1);
list.add(p2);
list.add(p3);
result = getPhoneInfo(list);
for (int i = 0; i < result.size(); i++) {
System.out.println(result.get(i).getPrice() + result.get(i).getBrand());
}
}
private static ArrayList<Phone> getPhoneInfo(ArrayList<Phone> list) {
ArrayList<Phone> result = new ArrayList<>();
Phone p = new Phone();
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getPrice() < 3000) {
p = list.get(i);
result.add(p);
}
}
return result;
}
}
学生成绩管理系统:
Student:
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 getId() {
return id;
}
public void setId(String 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;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
StudentSystem:
public class StudentSystem {
public static void startStudentSystem() {
ArrayList<Student> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
label:
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 choose = sc.next();
switch (choose) {
case "1":
addStudent(list, sc);
break;
case "2":
deleteStudent(list, sc);
break;
case "3":
updateStudent(list, sc);
break;
case "4":
queryStudent(list);
break;
case "5":
exitSystem();
default:
System.out.println("输入有误,请再尝试一次!");
break;
}
}
}
private static void updateStudent(ArrayList<Student> list, Scanner sc) {
System.out.println("请输入要修改学生的id:");
String id = sc.next();
int index = getIndex(list, id);//获取学生的索引
System.out.println("学号为:" + id + "的学生信息如下:");
//打印单行学生信息
querySingleStudent(list, index);
System.out.println("请输入修改学生的内容(id,姓名,年龄,家庭住址):");
String choose = sc.next();
switch (choose) {
case "id":
System.out.println("请输入需要修改id为:");
String newId = sc.next();
list.get(index).setId(newId);
break;
case "姓名":
System.out.println("请输入需要修改姓名为:");
String newName = sc.next();
list.get(index).setName(newName);
break;
case "年龄":
System.out.println("请输入需要修改年龄为:");
int newAge = sc.nextInt();
list.get(index).setAge(newAge);
break;
case "家庭住址":
System.out.println("请输入需要修改家庭住址为:");
String newAddress = sc.next();
list.get(index).setAddress(newAddress);
break;
}
}
private static void queryStudent(ArrayList<Student> list) {
if (list.size() == 0) {
System.out.println("当前无学生信息,请添加后再查询!");
return;//结束方法
}
System.out.println("id\t\t姓名\t年龄\t家庭住址");
for (int i = 0; i < list.size(); i++) {
querySingleStudent(list, i);
}
}
private static void querySingleStudent(ArrayList<Student> list, int i) {
Student s = list.get(i);
System.out.println(s.getId() + "\t\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAge());
}
private static void deleteStudent(ArrayList<Student> list, Scanner sc) {
System.out.println("请输入需要删除学生的id:");
String id = sc.next();
int index = getIndex(list, id);
if (index >= 0) {
list.remove(index);
} else {
System.out.println("该学生id不存在");
}
}
private static int getIndex(ArrayList<Student> list, String id) {
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
if (stu.getId().equals(id)) {
//返回索引值
return i;
}
}
//表示索引不存在
return -1;
}
private static void addStudent(ArrayList<Student> list, Scanner sc) {
Student stu = new Student();
while (true) {
System.out.println("请输入学生id:");
String id = sc.next();
//判断id是否重复
boolean flag = contains(list, id);
if (flag) {
System.out.println("id已重复,请重新录入!");
} else {
System.out.println("id未重复,可用!");
stu.setId(id);
break;
}
}
System.out.println("请输入学生姓名:");
String name = sc.next();
stu.setName(name);
System.out.println("请输入学生年龄:");
int age = sc.nextInt();
stu.setAge(age);
System.out.println("请输入学生家庭住址:");
String address = sc.next();
stu.setAddress(address);
//把学生对象添加到集合中
list.add(stu);
System.out.println("添加成功!");
}
private static boolean contains(ArrayList<Student> list, String id) {
// for (int i = 0; i < list.size(); i++) {
// //id重复
// if (list.get(i).getId().equals(id)) {
// return true;
// }
// ;
// }
// return false;
return getIndex(list, id) >= 0;//如果索引存在返回true
}
private static void exitSystem() {
System.out.println("退出");
System.exit(0);//停止虚拟机运行
//break label;
}
}
User:
public class User {
private String userName;
private String userPassword;
private String userPhone;
private String userCard;
public User() {
}
public User(String userName, String userPassword, String userPhone, String userCard) {
this.userName = userName;
this.userPassword = userPassword;
this.userPhone = userPhone;
this.userCard = userCard;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public String getUserCard() {
return userCard;
}
public void setUserCard(String userCard) {
this.userCard = userCard;
}
}
Welcome:
public class Welcome {
public static void main(String[] args) {
ArrayList<User> list = new ArrayList<>();
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("---------欢迎来到登陆界面---------");
System.out.println("请输入你的操作!1:登录 2:注册 3:忘记密码 4:退出");
String choose = sc.next();
switch (choose) {
case "1":
login(list, sc);
break;
case "2":
register(list, sc);
break;
case "3":
forgetPassword(list, sc);
break;
//退出
case "4":
System.exit(0);
break;
default:
System.out.println("操作失败,没有此选项!");
break;
}
}
}
//忘记密码
private static void forgetPassword(ArrayList<User> list, Scanner sc) {
System.out.println("请输入用户名:");
String name = sc.next();
boolean flag = contains(list, name);
if (flag) {
System.out.println("用户名不存在,请先注册!");
return;
}
System.out.println("请输入身份证号码:");
String userCard = sc.next();
System.out.println("请输入手机号码:");
String userNumber = sc.next();
//获取用户名所在索引
int i = getIndex(name, list);
if (!(userCard.equals(list.get(i).getUserCard()) && userNumber.equals(list.get(i).getUserPhone()))) {
System.out.println("账号信息不匹配,修改失败");
return;
}
String password1;
while (true) {
System.out.println("请输入新的密码:");
password1 = sc.next();
System.out.println("请输入确认密码:");
String password2 = sc.next();
boolean j = judge(password1, password2);
if (j) {
System.out.println("两次输入密码一致!");
break;
} else {
System.out.println("两次密码不一致,请重新输入!");
}
}
list.get(i).setUserPassword(password1);
System.out.println("密码修改成功!");
}
private static int getIndex(String name, ArrayList<User> list) {
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
if (name.equalsIgnoreCase(user.getUserName())) {
return i;
}
}
return -1;
}
//注册
private static void register(ArrayList<User> list, Scanner sc) {
User u = new User();
String userName;
String userPassword1;
String userPassword2;
String userPhone;
String userCard;
while (true) {
System.out.println("请输入用户名:");
userName = sc.next();
boolean flag1 = checkUserName(userName);
boolean flag2 = contains(list, userName);
if (flag1 && flag2) {
u.setUserName(userName);
break;
} else if (!flag1) {
System.out.println("格式错误,请重新输入!");
} else {
System.out.println("用户名已存在,请重新输入!");
}
}
while (true) {
System.out.println("请输入密码:");
userPassword1 = sc.next();
System.out.println("请输入确认密码:");
userPassword2 = sc.next();
boolean flag1 = judge(userPassword2, userPassword1);
if (flag1) {
u.setUserPassword(userPassword1);
break;
} else {
System.out.println("两次输入密码不一致请重新输入!");
}
}
while (true) {
System.out.println("请输入手机号:");
userPhone = sc.next();
boolean flag = checkUserPhone(userPhone);
if (flag) {
u.setUserPhone(userPhone);
break;
} else {
System.out.println("手机号不符合格式,请重新输入!");
}
}
while (true) {
System.out.println("请输入身份证:");
userCard = sc.next();
boolean flag = checkUserCard(userCard);
if (flag) {
u.setUserCard(userCard);
break;
} else {
System.out.println("身份证不符合格式,请重新输入!");
}
}
list.add(u);
System.out.println("注册成功!");
printList(list);
}
//打印存入的数据
private static void printList(ArrayList<User> list) {
for (int i = 0; i < list.size(); i++) {
User user = list.get(i);
System.out.println(user.getUserName() + ',' + user.getUserPassword() + ',' + user.getUserPhone() + ',' + user.getUserCard());
}
}
//判断身份证号是否符合格式
private static boolean checkUserCard(String userCard) {
int len = userCard.length();
if (len != 18) {
return false;
}
if (userCard.startsWith("0")) {
//如果以0开头,那么返回false
return false;
}
for (int i = 0; i < len - 1; i++) {
char c = userCard.charAt(i);
if (!(c >= '0' && c <= '9')) {
return false;
}
}
char c = userCard.charAt(len - 1);
if ((c >= '0' && c <= '9') || c == 'X' || c == 'x') {
return true;
} else {
return false;
}
}
//判断手机号是否符合格式
private static boolean checkUserPhone(String userPhone) {
int len = userPhone.length();
if (len != 11) {
return false;
}
if (userPhone.charAt(0) == '0') {
return false;
}
for (int i = 0; i < len; i++) {
char c = userPhone.charAt(i);
if (!(c >= '0' && c <= '9')) {
return false;
}
}
return true;
}
//判断两次输入密码是否一致
private static boolean judge(String userPassword2, String userPassword1) {
if (userPassword1.equals(userPassword2)) {
return true;
}
return false;
}
//判断用户名是否唯一
private static boolean contains(ArrayList<User> list, String userName) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getUserName().equals(userName)) {
return false;
}
}
return true;
}
private static boolean checkUserName(String userName) {
//长度在3~15之间
int len = userName.length();
if (len < 3 || len > 15) {
return false;
}
//格式只能由数字和字母组成
for (int i = 0; i < len; i++) {
char c = userName.charAt(i);
if (!(c >= 'a' && c <= 'z') && !(c >= 'A' && c <= 'Z') && !(c >= '0' && c <= '9')) {
return false;
}
}
//不能是纯数字和纯字母
int count = 0;
for (int i = 0; i < len; i++) {
char c = userName.charAt(i);
if ((c >= '0' && c <= '9')) {
count++;
}
}
return count != len && count != 0;
}
//获取5位随机验证码
private static String getCode() {
StringBuilder sb = new StringBuilder();
ArrayList<Character> list = new ArrayList<>();
for (int i = 0; i < 26; i++) {
//添加大写小写字母到集合中
list.add((char) ('a' + i));
list.add((char) ('A' + i));
}
Random r = new Random();
// System.out.println(list);
for (int i = 0; i < 5; i++) {
//获取随机索引
int index = r.nextInt(list.size());
char c = list.get(index);
//添加随机字母
sb.append(c);
}
//获取一个随机数字
int number = r.nextInt(10);
//获取随机验证码任意位置的索引
int index = r.nextInt(5);
//将sb转化为一个字符数组
char[] arr = sb.toString().toCharArray();
//将某一个位置的字母修改为随机数字
char c = arr[index];
arr[index] = (char) ('0' + number);
String code = new String(arr);
return code;
}
//登录
private static void login(ArrayList<User> list, Scanner sc) {
for (int i = 0; i < 3; i++) {
System.out.println("请输入用户名:");
String name = sc.next();
boolean flag = contains(list, name);
if (flag) {
System.out.println("用户名不存在,请先注册!");
return;
}
System.out.println("请输入密码:");
String password = sc.next();
while (true) {
String getCode = getCode();
System.out.println("请输入验证码:" + getCode);
String code = sc.next();
if (getCode.equalsIgnoreCase(code)) {
System.out.println("验证码输入正确!");
break;
} else {
System.out.println("验证码输入错误,请重新输入!");
}
}
//可以把零散的数据封装成对象,传递参数从传递一个整体即可
User u = new User(name, password, null, null);
//校验输入的用户名和密码
boolean result = checkUserInfo(u, list);
if (result) {
System.out.println("登录成功,进入学生成绩管理系统!");
StudentSystem ss = new StudentSystem();
ss.startStudentSystem();
break;
} else {
System.out.println("登录失败,用户名或密码错误");
if (i == 2) {
System.out.println("连续三次输入错误,账户已经锁定,请联系*****");
return;
} else {
System.out.println("您还剩" + (2 - i) + "次机会");
}
}
}
}
private static boolean checkUserInfo(User u, ArrayList<User> list) {
for (int i = 0; i < list.size(); i++) {
User cu = list.get(i);
if (u.getUserName().equals(cu.getUserName()) && u.getUserPassword().equals(cu.getUserPassword())) {
return true;
}
}
return false;
}
}
8793

被折叠的 条评论
为什么被折叠?



