回顾
编程题
1.编程实现双色球案例:共8个号码,其中红球6个,范围 1-32,蓝球1个 范围是1-17。
package com.wangxiaotian;
import java.util.Random;
public class DoubleColorBall {
//共7个球 6个红球,范围 1-32,1个蓝球 范围是1-17
public static void main(String[] args) {
//先声明一个int型,长度为7的数组,动态
int[] arr = new int[7];
//创建一个随机数对象
Random random = new Random();
//开始摇号(向数组中添加数据) ,需要先摇6给红球,范围1-32
for(int i = 0; i < arr.length-1; i++){
//红球
arr[i] = random.nextInt(32)+1;
//去重
for(int j = i-1; j >= 0; j--){
///号码重复判断
if(arr[i] == arr[j]){
i--;
break;
}
}
}
//蓝球 范围是1-17
arr[arr.length-1] = random.nextInt(17)+1;
//将数组中的双色球进行遍历
System.out.print("本期中奖结果:");
for(int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
}
运行结果:
本期中奖结果:21 31 23 2 28 24 14
2.按照如下要求,设计相关类、属性、方法。分析以下需求,并用代码实现
定义项目经理类
属性:姓名 工号 工资 奖金
行为:工作work
定义程序员类
属性:姓名 工号 工资
行为:工作work
要求:向上抽取一个父类,让这两个类都继承这个父类,共有的属性写在父类中,子类重写父类中的方法
public class Person {
String name;
String job;
double salary;
public Person(String name, String job, double salary) {
super();
this.name = name;
this.job = job;
this.salary = salary;
}
@Override
public String toString() {
return "Person [name=" + name + ", job=" + job + ", salary=" + salary + "]";
}
public void work() {}
}
public class Manager extends Person{
double bonus;
public Manager(String name, String job, double salary) {
super(name, job, salary);
}
public Manager(String name, String job, double salary, double bonus) {
super(name, job, salary);
this.bonus = bonus;
}
@Override
public void work() {
System.out.println("项目经理正在管理项目");
}
}
public class Programmer extends Person{
public Programmer(String name, String job, double salary) {
super(name, job, salary);
// TODO Auto-generated constructor stub
}
@Override
public void work() {
System.out.println("程序员正在编程");
}
}
public class PersonTest {
public static void main(String[] args) {
Manager manager = new Manager("张三","01",5000,500);
Programmer programmer = new Programmer("李四","02",4000);
manager.work();
programmer.work();
}
}
运行结果:
项目经理正在管理项目
程序员正在编程
3. 创建一个Map集合的对象,分别向集合中添加元素{“name”:“野马哥”,“age”:“18”,“hoby”:“烫头”,“physiology”:“非常帅”} 并使用三种方式进行遍历集合中的元素。
import java.util.HashMap;
import java.util.Map;
public class MapGather {
public static void main(String[] args) {
// 创建一个HashMap对象
Map<String, String> map = new HashMap<>();
// 向集合中添加元素
map.put("name", "野马哥");
map.put("age", "18");
map.put("hobby", "烫头");
map.put("physiology", "非常帅");
// 第一种方式:使用keySet()遍历键
System.out.println("使用keySet()遍历键:");
for (String key : map.keySet()) {
System.out.println(key + ",值:" + map.get(key));
}
// 第二种方式:使用entrySet()遍历键值对
System.out.println("\n使用entrySet()遍历键值对:");
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println(entry.getKey() + ",值:" + entry.getValue());
}
// 第三种方式:使用forEach()遍历
System.out.println("\n使用forEach()遍历:");
map.forEach((key, value) -> System.out.println(key + ",值:" + value));
}
}
运行截图:
使用keySet()遍历键:
name,值:野马哥
physiology,值:非常帅
age,值:18
hobby,值:烫头
使用entrySet()遍历键值对:
name,值:野马哥
physiology,值:非常帅
age,值:18
hobby,值:烫头
使用forEach()遍历:
name,值:野马哥
physiology,值:非常帅
age,值:18
hobby,值:烫头
4.编写一个简单的TCP服务器程序和一个对应的客户端程序。服务器应能够接受客户端的连接,接收客户端发送的字符串消息,并将该消息回显给客户端。客户端应能够连接到服务器,发送一条字符串消息,并接收来自服务器的响应。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) {
final int PORT = 12345;
try {
ServerSocket serverSocket = new ServerSocket(PORT);
System.out.println("服务器已启动,等待客户端连接...");
// 等待客户端连接
Socket clientSocket = serverSocket.accept();
System.out.println("客户端已连接");
// 获取输入流
BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
// 获取输出流
PrintWriter output = new PrintWriter(clientSocket.getOutputStream(), true);
String message;
// 循环接收和回显消息
while ((message = input.readLine()) != null) {
System.out.println("客户端发送的消息:" + message);
output.println("服务器收到消息:" + message); // 回显消息给客户端
}
// 关闭连接
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) {
final String SERVER_IP = "localhost";
final int SERVER_PORT = 12345;
try {
// 连接服务器
Socket socket = new Socket(SERVER_IP, SERVER_PORT);
System.out.println("已连接到服务器");
// 获取输入流
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
// 获取输出流
PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
// 获取服务器响应流
BufferedReader serverResponse = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String message;
// 循环发送和接收消息
while (true) {
System.out.print("请输入要发送的消息:");
message = input.readLine();
if (message.equals("exit")) {
break;
}
output.println(message); // 发送消息给服务器
System.out.println("服务器回复:" + serverResponse.readLine()); // 接收并打印服务器的回复
}
// 关闭连接
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}