24. november 2003 - 21:38Der er
7 kommentarer og 1 løsning
opdeling af ord i javaprogram
Hejsa,
Jeg er ved at lave et spil i java og er nu stødt ind i et problem. Jeg har en client og en server. Når serveren requester en string, har jeg defineret denne string i parseren til at være på 4 ord:
public class Parser {
private CommandWords commands; // holds all valid command words
public Parser() { commands = new CommandWords(); }
public Command getCommand(String inputFromClient) { String inputLine = inputFromClient; // will hold the full input line String word1; String word2; String word3; String word4;
StringTokenizer tokenizer = new StringTokenizer(inputLine);
if(tokenizer.hasMoreTokens()) word1 = tokenizer.nextToken(); // get first word else word1 = null; if(tokenizer.hasMoreTokens()) word2 = tokenizer.nextToken(); // get second word else word2 = null; if(tokenizer.hasMoreTokens()) word3 = tokenizer.nextToken(); // get third word else word3 = null; if(tokenizer.hasMoreTokens()) word4 = tokenizer.nextToken(); // get fourth word else word4 = null;
if(commands.isCommand(word1)) return new Command(word1, word2, word3, word4); else return new Command(null, word2, word3, word4); }
}
Denne string består af af et kommandonavn (f.eks. add), et navn (f.eks. Bo Jensen eller Bo), antal tjente points og antal tjente penge. Mit problem er nu, at hvis en person, f.eks. skriver at han hedder Bo Jensen (altså i 2 ord) er der jo pludselig 5 ord i det hele i stedet for 4. Jeg kunne godt tænke mig, at ordene blev adskildt med komma, når de bliver udskrevet, f.eks.: add, Bo Jensen, 100, 100. Hver gang der er et mellemrun opfatter programmet det som om, at det er en ny variabel, men "Bo" og "Jensen" er jo den samme. Hvordan løser jeg det? (hvis der altså er nogen der kan se hvad jeg mener)
public class SimpleClient { private BufferedReader inFromUser;
public static void main(String argv[]) throws UnknownHostException, IOException { SimpleClient client = new SimpleClient(); client.start(); }
/** * Constructor for objects of class SimpleClient */ public SimpleClient() { // create a buffered reader to read input from the terminal // (typed input from the user's keyboard) inFromUser = new BufferedReader(new InputStreamReader(System.in)); }
/** */ public void start() throws UnknownHostException, IOException { Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.print("Enter some text: "); String sentence = inFromUser.readLine();
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.