从服务器向多台计算机传数据打印并翻译之方案需求的变化

1、简单的打印——这个最简单的实现
2、不改变函数,直接从文本文件中获取String再打印,改变打印的字符只需要从文本文件中改变即可,但是只能在一台主机上实现。
3、从TCPServer中获取String就可以实现多台电脑同时改变。
现在要实现第三个需求,并且要把字符进行翻译,要翻译就需要用到Map(),顺便复习Map的知识。以及字符串的拆分——split()函数实现。还有倒置的需求.

package chp17;
import java.io.*;
import java.net.*;
import java.util.*;
public class HelloWrold {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = null;
		Socket s=null;
		try {
			s=new Socket("10.249.151.86",99);
			BufferedReader in=new BufferedReader(new InputStreamReader(s.getInputStream()));
			str=in.readLine();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
			if(s!=null)
				try {
					s.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
		Map<String,String> dictionary=new HashMap<String,String>();
		dictionary.put("Hello", "你好");// V	put(K key, V value)  将指定的值与此映射中的指定键关联(可选操作)。
		dictionary.put("World", "世界");
		dictionary.put("from", "来自");
		dictionary.put("TextFile", "文本文件");
		dictionary.put("TCPserver", "TCP服务器");
				
		String[] ss=str.split(" ");//字符串拆分保存进一个数组中,这个一定要是空格,不然读不到数据
		for(int i=0;i<ss.length;i++){
			String v=dictionary.get(ss[i]);//V get(Object key); 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
			ss[i]=v;	
		}
		//利用StringBuilder再把字符串拼起来
		StringBuilder sb=new StringBuilder("");
		for(String s1:ss){
			sb.append(s1);	
		}
		str=sb.toString();
		System.out.println(str);
		//这个是字符串倒置
		StringBuffer sb1=new StringBuffer(str);
		String str1=sb1.reverse().toString();
		System.out.println(str1);
	}
}

小结:1、首先从服务器上读取数据的话,我们要先写好服务器的代码,在服务器上写好要打印的数据,代码如[link]https://blog.csdn.net/sun_fengjiao/article/details/83997640
简单TCP网咯编程里面的代码,采用多线程的方式,可以允许多台电脑同时访问。
2、翻译需要用到一个Map(),可以查看API的方法,,收现需要建立一个字典,一一对应的建和值。
3、字符串的拆分split(),从服务器端读到数据之后进行拆分。
4、得到拆分之后的字符之后,就根据这个键去找相应的翻译的值,把相应的值存起来,然后拼接StringBuilder sb=new StringBuilder("");利用StringBuilder()类进行拼接。
for(String s1:ss){
sb.append(s1);
}
str=sb.toString();
拼接完之后还要转为字符串形式。
5、倒置,也是StringBuffer里面的函数,reverse()。StringBuffer和StringBuilder是一样的函数实现,只是StringBuffer是轻量级的,线程不安全。
StringBuffer sb1=new StringBuffer(str);
String str1=sb1.reverse().toString();
类似的还有两个在集合那章。

猜你喜欢

转载自blog.csdn.net/sun_fengjiao/article/details/84037280