【Java18】练习题

文章目录


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站/知乎/微信公众号:码农编程录
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43435675/article/details/112637273
今日推荐