//deck[count]=new Card(faces[count%13],suits[count/13])
是对的,下面那行除17是错的
另外,没有把大小王赋值到数组里
最后main函数里,打印方法错了。应该为,原本少了一个%-20s
System.out.printf("%-20s%-20s%-20s\n", myDeckOfCards.dealCard(), myDeckOfCards.dealCard(), myDeckOfCards.dealCard())
发牌完成以后剩下的3张牌就是保留的底牌
客户端:import java.io.*
import java.net.*
import java.awt.*
import java.awt.event.*
public class ChatClient extends Frame
{
TextArea ta = new TextArea()
TextField tf = new TextField()
public void launchFrame() throws Exception
{
this.add(ta, BorderLayout.CENTER)
this.add(tf, BorderLayout.SOUTH)
tf.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
try {
String sSend = tf.getText()
if(sSend.trim().length() == 0) return
ChatClient.this.send(sSend)
tf.setText("")
ta.append(sSend + "\n")
}
catch (Exception e)
}
}
)
this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
}
)
setBounds(300,300,300,400)
setVisible(true)
tf.requestFocus()
}
Socket s = null
public ChatClient() throws Exception
{
s = new Socket("127.0.0.1", 8888)
launchFrame()
(new Thread(new ReceiveThread())).start()
}
public void send(String str) throws Exception
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream())
dos.writeUTF(str)
}
public void disconnect() throws Exception
{
s.close()
}
public static void main(String[] args) throws Exception
{
BufferedReader br = new BufferedReader (
new InputStreamReader(System.in))
ChatClient cc = new ChatClient()
String str = br.readLine()
while(str != null &&str.length() != 0)
{
cc.send(str)
str = br.readLine()
}
cc.disconnect()
}
class ReceiveThread implements Runnable
{
public void run()
{
if(s == null) return
try {
DataInputStream dis = new DataInputStream(s.getInputStream())
String str = dis.readUTF()
while (str != null &&str.length() != 0)
{
//System.out.println(str)
ChatClient.this.ta.append(str + "\n")
str = dis.readUTF()
}
}
catch (Exception e)
{
e.printStackTrace()
}
}
}
}
服务器:
import java.net.*
import java.util.*
import java.io.*
import java.awt.*
import java.awt.event.*
public class ChatServer extends Frame
{
TextArea ta = new TextArea()
public void launchFrame()
{
add(ta, BorderLayout.CENTER)
setBounds(0,0,200,300)
this.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0)
}
}
)
setVisible(true)
}
ServerSocket server = null
Collection cClient = new ArrayList()
public ChatServer(int port) throws Exception
{
server = new ServerSocket(port)
launchFrame()
}
public void startServer() throws Exception
{
while(true)
{
Socket s = server.accept()
cClient.add( new ClientConn(s) )
ta.append("NEW-CLIENT " + s.getInetAddress() + ":" + s.getPort())
ta.append("\n" + "CLIENTS-COUNT: " + cClient.size() + "\n\n")
}
}
class ClientConn implements Runnable
{
Socket s = null
public ClientConn(Socket s)
{
this.s = s
(new Thread(this)).start()
}
public void send(String str) throws IOException
{
DataOutputStream dos = new DataOutputStream(s.getOutputStream())
dos.writeUTF(str)
}
public void dispose()
{
try {
if (s != null) s.close()
cClient.remove(this)
ta.append("A client out! \n")
ta.append("CLIENT-COUNT: " + cClient.size() + "\n\n")
}
catch (Exception e)
{
e.printStackTrace()
}
}
public void run()
{
try {
DataInputStream dis = new DataInputStream(s.getInputStream())
String str = dis.readUTF()
while(str != null &&str.length() !=0)
{
System.out.println(str)
for(Iterator it = cClient.iterator()it.hasNext())
{
ClientConn cc = (ClientConn)it.next()
if(this != cc)
{
cc.send(str)
}
}
str = dis.readUTF()
//send(str)
}
this.dispose()
}
catch (Exception e)
{
System.out.println("client quit")
this.dispose()
}
}
}
public static void main(String[] args) throws Exception
{
ChatServer cs = new ChatServer(8888)
cs.startServer()
}
}
(来自BJSXT)
最简单的方法,在每个牌对象加一个属性,专门用来排序这个属性是全局变量,写一个静态方法,这个方法用于返回当前数字,并自增1,如果需要多线程,注意加锁,牌的构造函数调用一次静态方法获取一个数值。在牌对象中写一个专门用于比较两个牌对象的方法,返回-1和1即可,-1表示前面的大,1表示前面的小,其实这种方法有些集合是有自带类似的欢迎分享,转载请注明来源:内存溢出
评论列表(0条)