------ android培训、java培训、期待与您交流! ----------
案例一:在学习集合之前,利用数组存储若干个学生信息,要求从键盘输入,并根据最高分提取学生信息。
<span style="font-size:18px;">import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
//定义一个Student数组
//格式:数据类型[] 数组名 = new 数据类型[长度];
//格式:数据类型[] 数组名 = new 数据类型[]{值1,值2,....,值n};
//格式:数据类型[] 数组名 = {值1,值2,....,值n};
Scanner sc = new Scanner(System.in);
System.out.println("请输入学员数量:");
int count = sc.nextInt();
Student[] stuArray = new Student[count];
for(int i = 0;i < stuArray.length ; i++){
System.out.println("请输入第:" + (i + 1) + " 名学员信息:");
System.out.println("姓名:");
String name = sc.next();
System.out.println("年龄:");
int age = sc.nextInt();
System.out.println("分数:");
int score = sc.nextInt();
//实例化一个Student对象
Student stu = new Student(name,age,score);
//将对象添加到数组
stuArray[i] = stu;
}
//遍历数组
for(int i = 0;i < stuArray.length ; i++){
Student stu = stuArray[i];
System.out.println(stu.name + "," + stu.age + "," + stu.score);
}
//找出分数最高的学员
Student maxStudent = getMaxStudent(stuArray);
System.out.println("最高分:" + maxStudent.score + " 姓名:" + maxStudent.name + ",年龄:" + maxStudent.age);
//找出最低分学员
//又想再存储1名学员信息
}
//定义一个方法,可以找出最高分学员
//1.方法做什么事情:找出Student数组中的成绩最高的Student引用
//2.是否需要外部数据:决定"形参";
//3.方法做完事后,是否需要告诉调用者一个结果:决定"返回值"
public static Student getMaxStudent(Student[] stuArr){
//假设第一个学员是最高分
Student maxStudent = stuArr[0];
//遍历
for(int i = 0; i < stuArr.length ; i++){
if(stuArr[i].score > maxStudent.score){
maxStudent = stuArr[i];
}
}
return maxStudent;
}
}
public class Student {
String name;
int age;
int score;
public Student(){
}
public Student(String name,int age,int score){
this.name = name;
this.age = age;
this.score = score;
}
}</span>
案例二:利用MVC分层思想,设计一个用户注册、登陆系统(MVC分层初步了解)
<span style="font-size:18px;">package cn.itcast.demo01_Main;
import cn.itcast.login.view.LoginView;
/*
* 将"登录注册案例"分层实现:
*
* 1.视图层(View):cn.itcast.login.view --> LoginView
* 2.控制层(Controller):cn.itcast.login.controller --> LoginControl
* 3.持久层:cn.itcast.login.dao --> UserDAO
* 4.模型层(Model):cn.itcast.login.model --> UserModel
*
* 类的制作流程:原则:先做"被依赖方",后做"依赖方"
*
*/
public class Demo {
public static void main(String[] args) {
//直接启动视图层
new LoginView().showView();
}
}
package cn.itcast.game;
import java.util.Random;
import java.util.Scanner;
/*
* 猜数字小游戏:
*
* 作业:完善下列程序,使程序在每次玩完后,能够列出菜单,询问用户是否继续玩,如果继续玩,可以再
* 生成新的随机数并重新开始;否则程序退出;
*/
public class Game {
public void start(){
Scanner sc = new Scanner(System.in);
//生成随机数对象
Random rdm = new Random();
//定义一个计数器
int count = 0;
//生成一个随机数(1--1000)
int num = rdm.nextInt(1000) + 1;
System.out.println("1--1000元的商品已经准备好,请开始!");
while(true){
System.out.println("请输入价格:");
int value = sc.nextInt();
count++;
if(value > num){
System.out.println("高了");
}else if(value < num){
System.out.println("低了");
}else{
System.out.println("恭喜你,猜中!!一共猜了:" + count + " 次!");
break;
}
}
}
}
package cn.itcast.login.controller;
import cn.itcast.login.dao.UserDAO;
import cn.itcast.login.model.UserModel;
public class UserControl {
private UserDAO userDao = new UserDAO();
//注册的方法,供"视图层"调用
public int regist(UserModel m){//1.用户名格式不正确;2.密码格式不正确;3.用户名已经存在;4.注册成功;
//验证用户名和密码
String regex = "[0-9a-zA-Z]{6,16}";
if(!m.getUserName().matches(regex)){
return 1;
}
regex = "[0-9a-zA-Z]{6,10}";
if(!m.getUserPwd().matches(regex)){
return 2;
}
//调用持久层
if(userDao.regist(m)){
return 4;
}else{
return 3;
}
}
//登录的方法
public boolean login(UserModel m){
//进行基本验证
//略
//调用持久层
return this.userDao.login(m);
}
}
package cn.itcast.login.dao;
import java.util.ArrayList;
import cn.itcast.login.model.UserModel;
public class UserDAO {
//用ArrayList模拟数据库
private ArrayList<UserModel> userList = new ArrayList<>();
//注册的方法
public boolean regist(UserModel m){
//验证用户名是否存在
for(UserModel user : this.userList){
if(user.getUserName().equals(m.getUserName())){
return false;//用户名已经存在
}
}
//将参数存储到userList中
userList.add(m);
return true;
}
//登录的方法
public boolean login(UserModel m){
for(UserModel user : userList){
if(user.getUserName().equals(m.getUserName()) &&
user.getUserPwd().equals(m.getUserPwd())){
return true;//找到
}
}
return false;//没找到
}
}
package cn.itcast.login.model;
public class UserModel {
private String userName;
private String userPwd;
public UserModel() {
}
public UserModel(String userName, String userPwd) {
this.userName = userName;
this.userPwd = userPwd;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPwd() {
return userPwd;
}
public void setUserPwd(String userPwd) {
this.userPwd = userPwd;
}
}
package cn.itcast.login.view;
import java.util.Scanner;
import cn.itcast.game.Game;
import cn.itcast.login.controller.UserControl;
import cn.itcast.login.model.UserModel;
public class LoginView {
private Scanner sc = new Scanner(System.in);
//控制层对象
private UserControl userControl = new UserControl();
public void showView(){
loop:
while(true){
System.out.println("(1).注册 (2).登录 (3).退出 :");
if(!sc.hasNextInt()){
sc = new Scanner(System.in);
continue;
}
int op = sc.nextInt();
switch(op){
case 1://注册
registUser();
break;
case 2://登录
if(login()){
//结束循环
break loop;
}
break;
case 3://退出
System.out.println("谢谢使用,拜拜!!");
return;//结束main()方法
// System.exit(0);//结束虚拟机
default:
System.out.println("请输入1--3的序号!");
break;
}
}
}
//登录
private boolean login() {
//引导用户
System.out.println("请输入登录名:");
String uName = sc.next();
System.out.println("请输入密码:");
String uPwd = sc.next();
//交给"控制层"
//封装数据模型
UserModel m = new UserModel(uName,uPwd);
if(this.userControl.login(m)){
System.out.println("登录成功!");
//后续的其它操作
new Game().start();
return true;
}else{
System.out.println("用户名或密码错误,请重新输入!");
return false;
}
}
//注册用户
private void registUser() {
//引导用户
System.out.println("请输入用户名:");
String uName = sc.next();//要求6--16位数字、小写字母、大写字母的组合
System.out.println("请输入密码:");
String uPwd = sc.next();//要求6--10位数字、小写字母、大写字母的组合
//交给"控制层"
//先封装UserModel
UserModel m = new UserModel(uName,uPwd);
//传递给控制层;
int op = userControl.regist(m);
switch(op){
case 1://用户名格式不正确
System.out.println("用户名要求:6--16位数字、小写字母、大写字母的组合,请重新填写!");
break;
case 2://密码格式不正确
System.out.println("密码要求:6--10位数字、小写字母、大写字母的组合,请重新填写!");
break;
case 3://用户名已经存在
System.out.println("用户名:" + uName + " 已经存在!");
break;
case 4://注册成功
System.out.println("注册成功!");
break;
}
}
}
</span>
案例三:利用集合模拟斗地主的洗牌和发牌
<span style="font-size:18px;">package cn.itcast.demo20_练习_模拟斗地主的洗牌和发牌_将牌排序;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;
public class Demo {
public static void main(String[] args) {
//1.封装一副牌:
String[] colors = {"♥","♠","♣","♦"};
String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//准备集合TreeMap,封装:编号+牌面
TreeMap<Integer,String> pokerMap = new TreeMap<>();
//准备集合ArrayList,封装:编号
ArrayList<Integer> indexList = new ArrayList<>();
//遍历数组,封装牌面
int index = 1;
for(String n : nums){
for(String c : colors){
pokerMap.put(index, c + n);
indexList.add(index);
index++;
}
}
pokerMap.put(index, "小王");
indexList.add(index);
index++;
pokerMap.put(index, "大王");
indexList.add(index);
//洗牌--》洗编号
Collections.shuffle(indexList);
//发牌--》发编号
TreeSet<Integer> user1Set = new TreeSet<>();
TreeSet<Integer> user2Set = new TreeSet<>();
TreeSet<Integer> user3Set = new TreeSet<>();
TreeSet<Integer> dipaiSet = new TreeSet<>();
for(int i = 0;i < indexList.size() ; i++){
if(i >= indexList.size() - 3){
dipaiSet.add(indexList.get(i));
}else{
if(i % 3 == 0){
user1Set.add(indexList.get(i));
}else if(i % 3 == 1){
user2Set.add(indexList.get(i));
}else if(i % 3 == 2){
user3Set.add(indexList.get(i));
}
}
}
//看牌
System.out.println("奥巴马:" + showPoker(user1Set,pokerMap));
System.out.println("朴槿惠:" + showPoker(user2Set,pokerMap));
System.out.println("金三胖:" + showPoker(user3Set,pokerMap));
System.out.println("底牌:" + showPoker(dipaiSet,pokerMap));
}
public static String showPoker(TreeSet<Integer> userSet,TreeMap<Integer,String> map){
StringBuffer buf = new StringBuffer("[");
for(Integer index : userSet){
buf.append(map.get(index)).append(", ");
}
buf.append("]");
return buf.toString();
}
}
</span>