Java game Guessing Game

I create a server on which clients connect to play a guessing game to get points from this.

My only problem at the moment is that whenever my client correctly counts the number, it jumps to the server and says "server null". I want the guessing game to continue until the client goes to say goodbye - on which his assessment is given.

Here is my code, you can indicate where I made a mistake and advise me how I would achieve what I want. I think the problem is in the protocol, I probably just need to put the time in the right place, so first. Thanks guys! Just to add, the variables are called weird, I know about it, it was previously knock-knock-knock

Protocol

import java.util.*; public class KKProtocol { int guess = 0, number = new Random().nextInt(100) + 1; int score = 0; Scanner scan = new Scanner(System.in); public String processInput(String theInput) { String theOutput = null; System.out.println("Please guess the number between 1 and 100."); while (guess != number) { try { if ((guess = Integer.parseInt(scan.nextLine())) != number) { System.out.println(guess < number ? "Higher..." : "Lower..."); } else { System.out.println("Correct!"); score = 1; } } catch (NumberFormatException e) { System.out.println("Please enter a valid number! If you want to Quit just say'Goodbye'"); } } return theOutput; }} 

Server

 import java.net.*; import java.io.*; public class KKServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; boolean listening = true; try { serverSocket = new ServerSocket(4040); } catch (IOException e) { System.err.println("Could not listen on port: 4040."); System.exit(-1); } System.err.println("Started KK server listening on port 4040"); while (listening) new KKThread(serverSocket.accept()).start(); System.out.println("Accepted connection from client"); serverSocket.close(); } } 

Topic

 import java.net.*; import java.io.*; import java.util.Scanner; public class KKThread extends Thread { private Socket mySocket = null; public KKThread(Socket inSocket) { //super("KKThread"); mySocket = inSocket; } public void run() { try { PrintWriter out = new PrintWriter(mySocket.getOutputStream(), true); Scanner in = new Scanner(mySocket.getInputStream()); String inputLine, outputLine; KKProtocol kkp = new KKProtocol(); outputLine = kkp.processInput(null); // first time only out.println(outputLine); // (Should be "Knock Knock") while (true) { inputLine = in.nextLine(); // read in client input outputLine = kkp.processInput(inputLine); // get reply from protocol out.println(outputLine); // send it out to socket if (outputLine.equals("Bye")) break; } out.close(); in.close(); mySocket.close(); } catch (Exception e) { System.err.println("Connection reset"); //e.printStackTrace(); } } } 

Client

 import java.io.*; import java.net.*; import java.util.Scanner; public class KKClient { public static void main(String[] args) throws IOException { Socket kkSocket = null; PrintWriter out = null; Scanner in = null; try { kkSocket = new Socket("127.0.0.1", 4040); out = new PrintWriter(kkSocket.getOutputStream(), true); in = new Scanner(new InputStreamReader(kkSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host."); System.exit(1); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection"); System.exit(1); } Scanner stdIn = new Scanner(System.in); String fromServer = in.nextLine(); while (true) { System.out.println("Server: " + fromServer); if (fromServer.equals("Bye.")) break; out.println(stdIn.nextLine()); fromServer = in.nextLine(); } out.close(); in.close(); stdIn.close(); kkSocket.close(); } } ' 

Why does he go to the server and say "server null"? How to continue the fortune-telling until the client goes to say goodbye?

+6
source share
2 answers

Currently you are not assigning a server response for score in KKProtocol.processInput() , so null returned, and as a result, the message you see appears:

 Server: null 

You can use:

 theOutput = Integer.toString(score); 

Also, your score fixed at 1 , so you may want to create a scoring system, possibly based on the number of guesses used.

+2
source

In your processInput() method, you are not returning any value, but always null . It appears that this null value is converted to the string "null" in the output and sent to the client.

+1
source

All Articles