[Java] 纯文本查看 复制代码
黑马程序员训练营基础测试
1、 从键盘接受一个数字,打印该数字表示的时间,最大单位到天,例如:
键盘输入6,打印6秒;
键盘输入60,打印1分;
键盘输入66,打印1分6秒;
键盘输入666,打印11分6秒;
键盘输入3601,打印1小时1秒
2、 定义一个二维int数组,编写代码获取最小元素。
3、 以下代码哪个是正确的?为什么?
a. byte b = 1 + 1;
b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;
d. byte b = 1; b = ++b;
4、 什么情况下适合用UDP协议,什么情况下适合用TCP协议?
5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
6、 编写程序,打印1到100之内的整数,但数字中包含7的要跳过,例如:17、27、71、72
7、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
8、 使用带缓冲功能的字节流复制文件。
小明的妈妈每天会给他20元零花钱。
平日里,小明先花掉一半,再把一半存起来。
每到周日,小明拿到钱后会把所有零花钱花掉一半。
请编程计算,从周一开始,小明需要多少天才能存够100元?
10、 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
我是10分通过的。。
这里只提供第十题的源代码(有些小问题:就是当客户端输入 over 结束标志时,客户端结束了,但是引起了服务端的结束,希望大神能解释下哈。)
[Java] 纯文本查看 复制代码 package com.itheima;
/*
* 10、 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
*问题分析:
*使用TCP协议:那么则要用到ServerSocket 和Socket对象,并且循环接收客户端传过来的字符串,
* 那么客户端和服务端均要循环执行。
*/
import java.net.*;
import java.io.*;
public class Test10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
class TCPServer
{
ServerSocket ss = null;
public static void main(String[] args)
{
ServerSocket ss = null;
Socket s = null;
try
{
try {
ss = new ServerSocket(9999);//创建监听9999端口的服务端对象
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("服务端开启失败!");//抛出失败异常
}
s = ss.accept();//阻塞,获取客户端连接请求
InputStream in = s.getInputStream();//获取客户端的输入流
/* BufferedReader bufr =
new BufferedReader(new InputStreamReader(in));//将流封装到缓冲区中
*/ OutputStream os = s.getOutputStream();//获取输出流对象
while(true)
{
System.out.println("ip:"+s.getInetAddress().getHostAddress()+"连接了");//输出连接过来的IP地址
byte[] buf =new byte[1024];
int len = in.read(buf);
String line = new String(buf,0,len);//将独到的字节流转换为字符串
System.out.println("客户端发送了数据:"+line);
PrintWriter pw = new PrintWriter(os,true);//创建一个带自动刷新的PrintWriter对象。
pw.println(fanzhuan(line));//调用反转函数计算结果并打印到客户端
}
}catch(Exception e)
{
}finally{
try{
if(s!=null)
s.close();//关闭客户端
}catch(IOException e){
System.out.println("客户端关闭失败!");
}
}
try{
if(ss!=null)
ss.close();//关闭服务端
}catch(IOException e){
System.out.println("服务端关闭失败!");
}
}
public static String fanzhuan(String str)
{
StringBuilder sb = new StringBuilder();
for(int i = str.length()-1;i>=0;i--)//倒序循环
{
sb.append(str.charAt(i));//将结果附加到StringBuilder中
}
return sb.toString();
}
}
class TCPClient
{
public static void main(String[] args)
{
Socket s = null;
try{
s = new Socket("127.0.0.1",9999);//创建客户端对象
OutputStream out = s.getOutputStream();//获取输出流对象
InputStream in = null;//获取输入流对象
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));//将控制台输入流封装到缓冲区中
String line = null;
while(!(line=bufr.readLine()).equals("over"))//如果输入的不是over,则发送到服务端上
{
out.write(line.getBytes());
in = s.getInputStream();
byte[] buf = new byte[1024];//定义缓冲区
int len = in.read(buf);//读取服务端返回的数据
System.out.println(s.getInetAddress().getHostAddress()+":"+new String(buf,0,len));
}
}catch(IOException e){
System.out.println("客户端发送数据失败!");
}finally{
try{
if(s!=null)
s.close();//关闭客户端
}catch(IOException e){
System.out.println("客户端关闭失败!");
}
}
}
}
|