03.31 实训第十五天

回顾

编程题

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();
        }
    }
}

运行截图:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值