java实验八 内部类,匿名类

实验八 内部类,匿名类

实验内容:

(一)内部类、匿名类(必做)
1、三大体育媒体互联网平台,由于资源独占,有些类别的运动只能在某个平台上进行独播;
2、足球赛事只能在平台A上进行独播,篮球赛事只能在平台B上进行独播,排球赛事只能在平台C上进行独播,其他赛事可以在几个平台上进行直播;
3、要求:
(1)三个体育直播平台EA、EB、EC设计为三个类
(2)设计一个体育赛事的类 SportsGame
(3)设计足球赛事,篮球赛事,排球赛事为体育赛事的三个子类,并分别作为三个平台的内部类
(4)其他羽毛球、乒乓球等赛事设计为普通的类,继承自体育赛事
(5)可以根据不同赛事的特点,为其设计内部的成员变量和成员函数
(6)利用匿名类新增其他的体育赛事
(7)在main函数中进行测试
(8)增加比赛规则接口 IRule,令所有的体育赛事实现该接口,重新制定各自的比赛规则
(二)图形化界面设计
1、实现如下图所示的布局
2、产生N个随机整数,并可以对随机数进行升序和降序操作(选做)
在这里插入图片描述

内容一代码:

// lsy
package java_experiments;

public class eight_one {

	public static void main(String[] args) {
		EA ea = new EA();
		EA.Football football = ea.new Football(22, "李铁");
		football.game();

		// 匿名类
		new SportsGame(8) {
			@Override
			public void rule() {
				System.out.println("比赛规则为用时最短者胜出!\n");
			}

			public void game() {
				System.out.println(getSportsman() + "人参加短跑运动");
				rule();
			}
		}.game();
	}

}

abstract class SportsGame implements IRule {
	int sportsman;

	public SportsGame() {
	}

	public SportsGame(int sportsman) {
		this.sportsman = sportsman;
	}

	public int getSportsman() {
		return sportsman;
	}

	public abstract void game();
}

class EA {

	EA() {
		System.out.println("欢迎观看A平台直播...");
	}

	class Football extends SportsGame {
		String coach;

		Football(int sportsman, String coach) {
			super(sportsman);
			this.coach = coach;
		}

		public void game() {
			System.out.println(getSportsman() + "人参加足球赛事");
			rule();
			strategy();
		}

		public void setCoach(String coach) {
			this.coach = coach;
		}

		public void strategy() {
			System.out.println("教练" + coach + "正在商量策略\n");

		}

		@Override
		public void rule() {
			System.out.println("比赛规则为进球多的队伍获胜!");

		}
	}

	class EB {

		EB() {
			System.out.println("欢迎观看B平台直播...");
		}

		class Basketball extends SportsGame {
			Basketball(int sportsman) {
				super(sportsman);
			}

			public void game() {
				System.out.println(getSportsman() + "人参加篮球赛事");
				rule();
			}

			@Override
			public void rule() {
				System.out.println("比赛规则为得分高的选手胜出!\n");
			}
		}
	}

	class EC {

		EC() {
			System.out.println("欢迎观看C平台直播...");
		}

		class Baseball extends SportsGame {
			Baseball(int sportsman) {
				super(sportsman);
			}

			public void game() {
				System.out.println(getSportsman() + "人参加排球赛事");
				rule();
			}

			@Override
			public void rule() {
				System.out.println("比赛规则为得分高的队伍胜出!\n");
			}
		}
	}
}

class Badminton extends SportsGame {
	Badminton(int sportsman) {
		super(sportsman);
	}

	public void game() {
		System.out.println(getSportsman() + "人参加羽毛球赛事");
		rule();
	}

	@Override
	public void rule() {
		System.out.println("比赛规则为得分高的选手胜出!\n");

	}
}

class Pingpong extends SportsGame {
	Pingpong(int sportsman) {
		super(sportsman);
	}

	public void game() {
		System.out.println(getSportsman() + "人参加乒乓球赛事");
		rule();
	}

	@Override
	public void rule() {
		System.out.println("比赛规则为分数高的选手胜出!\n");
	}
}

interface IRule {
	void rule();
}

实验结果

在这里插入图片描述

内容二代码:

// lsy
package java_experiments;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class eight_two extends JFrame {
	public eight_two() {
		ArrayList<JTextField> jtfs = new ArrayList<>();// 用于保存文本框
		Container c = this.getContentPane();
		JPanel jp = new JPanel();
		int row = 9;// 行数
		int col = 2;// 列数
		int[] array = new int[8];
		jp.setLayout(new GridLayout(row, col, 5, 5));
		JLabel jtf1 = new JLabel("排序前数值序列");
		JLabel jtf2 = new JLabel("排序后数值序列");
		jp.add(jtf1);
		jp.add(jtf2);
		for (int i = 0; i < 16; i++) {
			JTextField jtf = new JTextField("");
			jtf.setEditable(false);// 不允许编辑表格
			jtfs.add(jtf);
			jp.add(jtf);
		}
		c.add(jp);

		JPanel jp1 = new JPanel();
		final JButton jb = new JButton("随机生成");
		final JButton jbOut = new JButton("排序");
		Dimension preferredSize = new Dimension(150, 30); // 设置尺寸
		jb.setPreferredSize(preferredSize);
		jbOut.setPreferredSize(preferredSize);
		jp1.add(jb);
		jp1.add(jbOut);
		c.add(jp1, BorderLayout.SOUTH);

		jb.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Random random = new Random();// 创建随机数对象
				for (int i = 0; i < array.length; i++) {// 初始化数组元素
					array[i] = random.nextInt(50);// 生成50以内的随机数
				}
				int i = 0;// 将i重置为0
				for (int a = 0; a < jtfs.size(); a++) {
					if (a % 2 == 0) {
						jtfs.get(a).setText(array[i] + "");
						i++;

					}

				}

			}
		});

		jbOut.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int temp;
				// 根据角标进行比较,
				for (int i = 0; i < array.length; i++) {
					// j是数组的最后一个角标
					for (int j = array.length - 1; j > i; j--) {
						if (array[j] < array[j - 1]) {
							// 从后往前进行比较,小数往前,一轮之后最小数就在最前面了
							temp = array[j - 1];
							array[j - 1] = array[j];
							array[j] = temp;
						}
					}
				}
				int i = 0;// 将i重置为0
				for (int a = 0; a < jtfs.size(); a++) {
					if (a % 2 != 0) {
						jtfs.get(a).setText(array[i] + "");
						i++;
					}

				}
			}
		});
		this.setBounds(160, 250, 330, 350);
		this.setTitle("主窗体");
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new eight_two();
	}
}

实验结果

在这里插入图片描述

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值