我有三个类。当服务器启动时,它会创建一个带有guessCount和随机数的randomGame对象。当客户端启动时,它连接到服务器并将该号码传递给服务器以播放猜测方法(使用控制台输入号码)来猜测随机游戏生成的随机数。java多线程和对象
但是下面有问题。客户端每输入一次,guessCount &随机数就重新初始化(即随机数不同,guessCount不能递增)。我希望随机数对于每个运行的客户端程序都是相同的,并且每次猜测方法运行时,guessCount将会增加1。
public class Game {
private int num;
private int guessCount;
Game (int num) {
this.num = num;
System.out.println("guessCount = " + guessCount);
System.out.println("num = " + num);
}
public int guess (int ran) {
int result;
guessCount++;
if (this.guessCount >= 10) {
return -2;
} else if (ran < num) {
return -1;
} else if (ran > num) {
return 1;
} else {
return 0;
}
}
}
这里的RandomGame
class RandomGame extends Game {
RandomGame() {
super(0 + (int)(Math.random() * ((90 - (0)) + 1)));
}
public static void main (String args[]) {
}
}
这里的服务器:
import java.io.*;
import java.net.*;
public class Q4Server {
public static void main(String arg[]) {
try {
ServerSocket ss = new ServerSocket(12345);
while(true) {
Socket s = ss.accept();
ClientHandler ch = new ClientHandler(s);
ch.start();
}
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
这里的客户端处理程序:
class ClientHandler extends Thread {
Socket socket;
RandomGame g;
public ClientHandler(Socket socket) {
this.socket = socket;
g = new RandomGame();
}
public void run() {
try {
DataInputStream dis = new DataInputStream(socket.getInputStream());
DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
int x = dis.readInt();
int reply = this.g.guess(x);
System.out.println("reply = " + reply);
dos.writeInt(reply);
//System.out.println(reply);
//System.out.println(reply);
socket.close();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
没有影响:(....... – hkguile