1.斗地主
package com.itheima00.poker;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class PokerDemo {
public static void main(String[] args) {
//1. 准备一副牌
String[] colors = {
"♠","♥","♣","♦"};
String[] numbers = {
"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
ArrayList<String> list = new ArrayList<>(); //集合收集牌
for (String color : colors) {
for (String number : numbers) {
String poker = color + number;
// System.out.println(poker);
list.add(poker);
}
}
list.add("小☺");
list.add("大☺");
//System.out.println(list);
//2. 洗牌: 随机产生次数10 , 再随机交换两个元素位置
Collections.shuffle(list); // Arrays / Collections / Objects 工具类 : 静态方法
//System.out.println(list);
//3. 发牌:模拟三个玩家+底牌
ArrayList<String> p1 = new ArrayList<>();
ArrayList<String> p2 = new ArrayList<>();
ArrayList<String> p3 = new ArrayList<>();
ArrayList<String> dp = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
//遍历这副牌,不能用增强for循环,因为增强for循环无索引。第0张发给谁,要用索引取模。所以用普通for循环。
String poker = list.get(i); //取当前牌,第一次取就是第0张牌
int mod = i % 3;
if(i < 3){
//先发三张底牌,不然最后会忘记留底牌
dp.add(poker);
}else if(mod == 0){
p1.add(poker);
}else if(mod == 1){
p2.add(poker);
}else if(mod == 2){
p3.add(poker);
}
}
//4.看牌
lookPoker(p1);
lookPoker(p2);
lookPoker(p3);
lookPoker(dp);
}
private static void lookPoker(ArrayList<String> list) {
Iterator<String> it = list.iterator();
while(it.hasNext()){
String poker = it.next();
System.out.print(poker+"\t"); //同一个人不换行打印
}
System.out.println(); //不同人换行
}
}
2.发工资
package com.atguigu.test03.exer;
public abstract class Employee {
private String name;
private MyDate birthday;
public Employee(String name, MyDate birthday) {
super();
this.name = name;
this.birthday = birthday;
}
public Employee() {
super();
}
public Employee(String name,int year, int month, int day){
super();
this.name = name;
this.birthday = new MyDate(year, month ,day);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public MyDate getBirthday() {
return birthday;
}
public void setBirthday(MyDate birthday) {
this.birthday = birthday;
}
//double earnings()
public abstract double earnings(); //抽象方法没有方法体不能加{}
//toString()方法输出对象的name,birthday。
public String toString(){
return "姓名:" + name + ",生日:" + birthday.toDateString();
}
}
package com.atguigu.test03.exer;
public class MyDate {
private int year;
private int month;
private int day;
public MyDate(int year, int month, int day) {
super();
this.year = year;
this.month = month;
this.day = day;
}
public MyDate() {
super();
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public int getDay() {
return day;
}
public void setDay(int day) {
this.day = day;
}
//toDateString()方法返回日期对应的字符串:xxxx年xx月xx日
public String toDateString(){
return year + "年" + month + "月" + day + "日";
}
}
package com.atguigu.test03.exer;
public class SalariedEmployee extends Employee{
private double monthlySalary;
private int workingDay;
private int totalDays;
public SalariedEmployee(String name, MyDate birthday, double monthlySalary, int workingDay, int totalDays) {
super(name, birthday);
this.monthlySalary = monthlySalary;
this.workingDay = workingDay;
this.totalDays = totalDays;
}
public SalariedEmployee(String name, int year, int month, int day, double monthlySalary, int workingDay, int totalDays) {
super(name, year, month, day);
this.monthlySalary = monthlySalary;
this.workingDay = workingDay;
this.totalDays = totalDays;
}
public SalariedEmployee() {
super();
}
public double getMonthlySalary() {
return monthlySalary;
}
public void setMonthlySalary(double monthlySalary) {
this.monthlySalary = monthlySalary;
}
public int getWorkingDay() {
return workingDay;
}
public void setWorkingDay(int workingDay) {
this.workingDay = workingDay;
}
public int getTotalDays() {
return totalDays;
}
public void setTotalDays(int totalDays) {
this.totalDays = totalDays;
}
//实现父类的抽象方法earnings(),该方法返回月薪*出勤天数/本月总工作日;
@Override
public double earnings() {
return monthlySalary * workingDay / totalDays;
}
//toString()方法输出员工类型信息及员工的name,birthday。
public String toString(){
return "正式工:" + super.toString();
}
}
package com.atguigu.test03.exer;
public class HourlyEmployee extends Employee{
private int wage;
private int hour;
public HourlyEmployee() {
super();
}
public HourlyEmployee(String name, MyDate birthday, int wage, int hour) {
super(name, birthday);
this.wage = wage;
this.hour = hour;
}
public HourlyEmployee(String name, int year, int month, int day, int wage, int hour) {
super(name, year, month, day);
this.wage = wage;
this.hour = hour;
}
public int getWage() {
return wage;
}
public void setWage(int wage) {
this.wage = wage;
}
public int getHour() {
return hour;
}
public void setHour(int hour) {
this.hour = hour;
}
//实现父类的抽象方法earnings(),该方法返回wage*hour值;
@Override
public double earnings() {
return wage * hour;
}
//toString()方法输出员工类型信息及员工的name,birthday。
public String toString(){
return "小时工: " + super.toString();
}
}
package com.atguigu.test03.exer;
import java.util.Scanner;
public class TestExer2 {
public static void main(String[] args) {
Employee[] all = new Employee[2];
all[0] = new SalariedEmployee("杨洪强", 1995, 12, 14, 25000, 20, 23);
all[1] = new HourlyEmployee("崔志恒", new MyDate(1993, 3, 8), 50, 100);
Scanner input = new Scanner(System.in);
System.out.print("请输入月份:");
int month = input.nextInt();
for (int i = 0; i < all.length; i++) {
if(all[i].getBirthday().getMonth() == month){
System.out.println(all[i].toString() + ",实发工资:" +( all[i].earnings()+100));
}else{
System.out.println(all[i].toString() + ",实发工资:" +all[i].earnings());
}
}
}
}
public class Test06 {
public static void main(String[] args) {
//定义一个数组,用静态初始化完成数组元素的初始化
int[] arr = {
68, 27, 95, 88, 171, 996, 51, 210};
//定义一个求和变量,初始值是0
int sum = 0;
//遍历数组,获取到数组中的每一个元素
for(int x=0; x<arr.length; x++) {
//判断该元素是否满足条件,如果满足条件就累加
if(arr[x]%10!=7 && arr[x]/10%10!=7 && arr[x]%2==0) {
sum += arr[x];
}
}
System.out.println("sum:" + sum); //1362
}
}
public class Test03 {
public static void main(String[] args) {
//数据在1-100之间,用for循环实现数据的获取
for(int x=1; x<=100; x++) {
//根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除
if(x%10==7 || x/10%10==7 ) {
//在控制台输出满足规则的数据
System.out.println(x);
}
}
}
}
import java.util.Random;
class Demo01_Random {
public static void main(String[] args) {
//创建键盘录入数据的对象
Random r = new Random();
//随机生成一个数据
int number = r.nextInt(33)+1; //0-33间再+1即1-34间
System.out.println("number:"+ number);
}
}
B站/知乎/微信公众号:码农编程录