关于用管道流实现界面化的简易猜数字

问题描述

程序实现不了猜数字的过程,可能是TestThread的run方法靠MyWin的run实现,请问怎么改写importjava.io.*;importjava.awt.*;importjava.awt.event.*;importjavax.swing.*;importjava.lang.*;publicclassNumberTest{publicstaticvoidmain(String[]args){MyWinwin=newMyWin();win.firstThread.start();win.secondThread.start();}}classMyWinextendsJFrameimplementsRunnable{TestThreadfirstThread;TestThreadsecondThread;JTextAreatextArea;Containercon;publicMyWin(){firstThread=newTestThread();secondThread=newTestThread();textArea=newJTextArea(8,28);con=getContentPane();con.setLayout(newFlowLayout());con.add(newJScrollPane(textArea));setBounds(100,100,150,150);setVisible(true);//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}publicvoidrun(){if(Thread.currentThread()==firstThread){intrealNumber=(int)(Math.random()*100)+1;try{firstThread.dataOut.writeUTF("给你一个1到100之间的数,请您猜");while(true){intreceiveGuess=firstThread.dataIn.readInt();if(receiveGuess>realNumber){firstThread.dataOut.writeUTF("您猜大了");textArea.append("n您的猜测是:"+receiveGuess);}elseif(receiveGuess<realNumber){firstThread.dataOut.writeUTF("您猜小了");textArea.append("n您的猜测是:"+receiveGuess);}else{firstThread.dataOut.writeUTF("您猜对了");textArea.append("n您的猜测是:"+receiveGuess);return;}try{firstThread.sleep(1200);}catch(InterruptedExceptione){}}}catch(IOExceptione){}}if(Thread.currentThread()==secondThread){intgessNumber=(int)(Math.random()*100)+1;intmin=0,max=100;while(true){try{Stringmessage=secondThread.dataIn.readUTF();if(message.equals("给你一个1到100之间的数,请您猜")){secondThread.dataOut.writeInt(gessNumber);textArea.append(("ttttt我猜这个数是"+gessNumber));}elseif(message.equals("您猜大了")){max=gessNumber;gessNumber=(gessNumber+min)/2;secondThread.dataOut.writeInt(gessNumber);textArea.append(("ttttt我猜这个数是"+gessNumber));}elseif(message.equals("您猜小了")){min=gessNumber;gessNumber=(gessNumber+max)/2;secondThread.dataOut.writeInt(gessNumber);textArea.append(("ttttt我猜这个数是"+gessNumber));}else{textArea.append(("ttttt我猜对了,这个数是"+gessNumber));return;}}catch(IOExceptione){}}}}}classTestThreadextendsThread{PipedInputStreamin;DataInputStreamdataIn;PipedOutputStreamout;DataOutputStreamdataOut;publicTestThread(){in=newPipedInputStream();dataIn=newDataInputStream(in);out=newPipedOutputStream();dataOut=newDataOutputStream(out);}publicPipedInputStreamgetPipedInputStream(){returnin;}publicPipedOutputStreamgetPipedOutputStream(){returnout;}}

时间: 2024-12-25 12:44:17

关于用管道流实现界面化的简易猜数字的相关文章

java 多线程通信之管道流

/*   管道流: PipedInputStream void connect(PipedOutputStream src)  使此管道输入流连接到管道输出流 src PipedOutputStream void connect(PipedInputStream snk)   在JDK我们看到PipedInputStream中有管道缓冲区,用来接收数据 管道流内部在实现时还有大量的对同步数据的处理 管道输出流和管道输入流执行时不能互相阻塞,所以一般要开启独立线程分别执行 顺便复习了多线程操作 [

java 管道流的读写操作 用于两个线程之间的通信

  /* java 管道流的读写操作 用于两个线程之间    PipedOutputStream    PipedInputStream  连接起来就是一个管道     管道输出流可以向管道写入数据   管道输入流可以从管道读取数据     这种Decorator 装饰 的设计模式 大大增强了java流的功能  可以在构造流的时候连接 管道输入输出流 也可以通过connect函数连接 */ import java.io.*  ; class  PipeTest {  public  static

JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个阳光明媚的周末,一个又一个的周末,周而复始,不断学习,前方的路你可曾看见?随我一起走进技术的世界,流连忘返吧! 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象

您好!我想问用我做了个猜数字游戏, 界面控制数字范围怎么弄

问题描述 您好!我想问用我做了个猜数字游戏, 界面控制数字范围怎么弄 您好!我想问用我做了个猜数字游戏, 界面控制数字范围怎么弄,就是编出两个输入框,数字范围我随时可以改,然后我在那个范围内猜数,能帮帮我不!非常感谢! 解决方案 a,b是你输入的值math.random()*math.abs(b-a)+(a>b?b:a) 解决方案二: 不知道你要表达什么意思,是要猜一个数还是要猜这个数在不在范围内. 解决方案三: 用java做 要猜出在一个范围内系统随机定的数,但范围是在界面里的输入框由我自己输

关于windows服务访问SQLSERVER(SP3补丁。。没有1433端口,通过管道流协议)数据库的问题

问题描述 用java程序能够访问(内网的2台机器)将程序注册成服务(通过javaServicewrapper)老是提示未于可信任SQLSERVER建立连接希望:1.不能打补丁...这种情况太普遍...泼出去的水没有办法一滴一滴的打补丁2.局域网内的windows登录,这个也不太现实,有的没有局域网希望高手解决

Java图形界面开发之简易记事本_java

在学习了Java事件之后,自己写了一个极其简单的记事本.用到了MenuBar,Menu,MenuITem等控件,事件包括ActionListener以及KeyListener. 代码如下: package com.package3; /* * 功能:简易记事本的开发,可以保存文件,打开文件,退出记事本 * author:ywq */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.io.*

通过管道进行线程间通信:字节流。字符流的用法及API类似

管道流(PipedStream)可以用于不同线程间直接传送数据.一个线程发送数据到输出管道,另一个线程从输入管道中读取数据.通过使用管道,实现不同线程间的通信,而无须借助于类似临时文件之类的东西. package thread.communicate; import java.io.IOException; import java.io.PipedInputStream; import java.io.PipedOutputStream; /*2015-11-19*/ public class

第四讲 Java的例外处理和I/O流

[课前思考] 1. 什么是例外?Java中有哪两种例外处理机制? 2. 字节流和字符流的基类各是什么? 3. 什么是对象的串行化?对象串行化的作用是什么? 难点: 1.如何使用Java中两种例外处理机制,抛弃例外和声明抛弃例外的区别与联系. 2.处理字符流时,其构造方法的参数是一个字节流. 3.对象串行化的概念.4.1 什么是例外 4.1.2 例外处理机制 抛弃(throw)例外: 在Java程序的执行过程中,如果出现了异常事件,就会生成一个例外对象.生成的例外对象将传递给Java运行时系统,这

阿里云大数据利器之-使用sql实现流计算做实时展现业务( flume故障转移版 )

实时业务处理的需求越来越多,也有各种处理方案,比如storm,spark等都可以.那以数据流的方向可以总结成数据源-数据搜集-缓存队列-实时处理计算-数据展现.本文就用阿里云产品简单实现了一个实时处理的方案. 一,总体架构 按照数据流向 数据采集:flume(配置故障转移) 缓存队列:datahubhttps://help.aliyun.com/product/53345.html?spm=5176.7618386.3.4.cigK2v 数据计算:阿里流计算(StreamCompute)http