老师我想问下既然读取到字节流已经转成字符流了,那为什么输出的时候不直接使用new BufferedWriter(new FileWriter(”C:\\users\\chenkai\\desktop\\JavaDemo\\c.txt“))
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter (new FileOutputStream("C:\\Users\\chenkai\\Desktop\\JavaDemo \\c.txt"),"gbk"
这个方法是哪的我记不得了也没找到 怎么就成数组了
老师API接入文档要在哪里下载,每次老师都能打开 我没有这个文档
package com.bjsxt.collection; import java.util.HashSet; import java.util.Set; /** * 产生[1,10]的随机整数,将不重复的10个随机数放入List容器中 */ public class setDemo { public static void main(String[] args) { Set<Integer> set = new HashSet<>(); while(true){ int num = (int)((10*Math.random())+1); set.add(num); //set不允许存放重复元素 所以不用判断是否重复 //结束循环 if(set.size()==10){ break; } } for(Integer s : set){ System.out.print(s+"\t"); } } }
HashSet不是应该无序的吗 为什么我运行了很多次 都是按1到10的顺序排好的
双向通信.zip
老师,我的客户端怎么没有回应
为什么这里new的是这个而不是iGeneric
老师,为什么switch的case后面要跟着break?我试着不加break,也不报错,但是显示出来的东西有点奇怪
老师,这个SimpleDateFormat和DateFormat有什么区别呢,两个都可以运行呢
Set<String> set = new HashSet<>(); set.add("c"); set.add(null); set.add("a"); Iterator<String> it = set.iterator(); if( it.hasNext()){ String next = it.next(); System.out.println(next); } System.out.println("1 "+it.next()); System.out.println("--------while-------"); Iterator<String> it2 = set.iterator(); while(it2.hasNext()){ String str = it2.next(); System.out.print(str+" "); }
Set集合允许有null
问题1:获取单个元素时,为什么第一个it.next()输出1 null 第二个反而是2 a,而且如果第一输出的是null那么不就代表it.hasNext()是false么,因为他是null啊
问题2:那么it2.hasNext()就为false,为什么还能循环输出第三个元素?
问题4:如果把null改为b输出的是1 a 和 2 b,把b给为33输出结果是1 33和2 a,这是因为set接口的无序性导致的么?根据哈希值计算存储的原因
结果:
import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; /** *发送消息的线程 */ class send extends Thread{ //与客户端对应的socket对象 private Socket socket; public send(Socket socket){ //构造器,用于传递socket this.socket=socket; } @Override public void run() { this.sendMsg(); } //定义发送消息的方法 private void sendMsg(){ //对于消息的发送需要创建两个对象,1.消息的来源:需要创建键盘输入对象 2.需要创建输出流对象 try(Scanner scanner = new Scanner(System.in); PrintWriter pw =new PrintWriter(socket.getOutputStream());){ while(true){ String msg = scanner.nextLine(); pw.println(msg); pw.flush(); } }catch (Exception e){ e.printStackTrace(); } } } /** *接收消息的线程 */ class receive extends Thread{ //创建与客户端对应的socket对象 private Socket socket; public receive(Socket socket){//构造器,用于传递socket this.socket=socket; } @Override public void run() { this.receiveMsg(); } //定义接受消息的方法 private void receiveMsg(){ //创建输入对象流,字节转字符,字符处理流 try(BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()))){ while (true){ String str =br.readLine(); System.out.println("客户端说:"+str); } }catch (Exception e){ e.printStackTrace(); } } } public class ChatSocketSever { public static void main(String[] args) { try(ServerSocket serverSocket = new ServerSocket(8888)){ System.out.println("服务端启动中,等待链接....."); //创建与客户端链接时的socket对象 Socket socket = new Socket(); System.out.println("连接成功!"); //将与客服端对应的socket对象传递给发送消息的线程,并启动该线程 new send(socket).start(); //将与客户端对应的socket对象传递给接受消息的线程,并启动该线程 new receive(socket).start(); }catch (Exception e){ e.printStackTrace(); } } }
当我打开第二个goodTCP出现报错现象
老师这个什么意思
我英语很差,这节课完全没听懂,不知道老师说的的英语名称是前面代码中的什么东西,咋整?
老师我的问题就是main方法下的System.out.println(Thread.isAlive+“ 4")为什么是判段子线程的而不是主线程的是因为主线程休眠了是吗
老师群聊基本功能我已经实现了,可是关闭客户端会报错,我找了一天都找不到有时间可以帮我看一下吗,十分感谢
Chat.zip
非常抱歉给您带来不好的体验!为了更深入的了解您的学习情况以及遇到的问题,您可以直接拨打投诉热线:
我们将在第一时间处理好您的问题!
关于
课程分类
百战程序员微信公众号
百战程序员微信小程序
©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园网站维护:百战汇智(北京)科技有限公司 京公网安备 11011402011233号 京ICP备18060230号-3 营业执照 经营许可证:京B2-20212637