State
이 입력 될 때까지 루프는 동일한 레코드에 "있어야"합니다. 유효한 옵션은 경고로 기록됩니다 : [undefined, x, o, c, a, l, d]
하지만 분명히 루프는 다음 레코드로 계속 진행됩니다.유효한 데이터가 입력 될 때까지 무한 루프를 입력하는 방법은 무엇입니까?
은 유효한 입력이 수신 될 때까지 "무한 루프"여야합니다.
[email protected]:~$
[email protected]:~$ java -jar NetBeansProjects/Client/dist/Client.jar
Jul 07, 2014 5:23:39 AM net.bounceme.dur.client.driver.Client inputOutput
INFO:
id 1
phone 456465
title record number 1
state x
enter the state for record:fjdkfjd
Jul 07, 2014 5:23:43 AM net.bounceme.dur.client.driver.Client inputOutput
WARNING: [undefined, x, o, c, a, l, d]
Jul 07, 2014 5:23:43 AM net.bounceme.dur.client.driver.Client inputOutput
INFO:
id 2
phone 123
title second record
state o
enter the state for record:^[email protected]:~$
[email protected]:~$
코드 : 나는 루프 밖으로 일했다,하지만 불행히도, 문제가 무엇인지 볼 수 있다고 생각
package net.bounceme.dur.client.driver;
import net.bounceme.dur.data.Title;
import java.net.*;
import java.io.*;
import java.util.Arrays;
import java.util.logging.Logger;
import net.bounceme.dur.data.State;
public class Client {
private static final Logger log = Logger.getLogger(Client.class.getName());
private String server = "localhost";
private int portNumber = 8080;
private final Console c = System.console();
private Client() {
}
public Client(String server, int portNumber) {
this.server = server;
this.portNumber = portNumber;
}
public void inputOutput() throws IOException, ClassNotFoundException {
Socket socket = new Socket(server, portNumber);
boolean eof = false;
Title title = null;
String stringState = null;
State state = State.undefined;
try (ObjectOutputStream objectOutputStream = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream objectInputStream = new ObjectInputStream(socket.getInputStream())) {
do {
try {
title = (Title) objectInputStream.readObject();
log.info(title.toString());
do {
c.printf("enter the state for record:");
stringState = null;
state = State.undefined;
try {
stringState = c.readLine();
state = State.valueOf(stringState);
} catch (java.lang.IllegalArgumentException iae) {
log.warning(Arrays.deepToString(State.values()));
}
} while (title.getState() == State.undefined);
title.setState(state);
log.fine(title.toString());
title.setTitle("modified from client");
objectOutputStream.writeObject(title);
} catch (java.io.EOFException eofe) {
eof = true;
}
} while (!eof);
}
}
}
package net.bounceme.dur.data;
public enum State {
undefined(0), x(1), o(2), c(3), a(4), l(5), d(6);
private int code = 0;
State(int code) {
this.code = code;
}
public int getCode() {
return this.code;
}
public static State getState(int i) {
for (State state : State.values()) {
if (state.getCode() == i) {
return state;
}
}
return undefined;
}
}
.
는 당신이 우리를 보여줄 수있는 방법을 방법'State.valueOf (newState)'작품! – Baalthasarr
디버깅을 시도하고 'newState'가 올바르게 설정되어 있는지 확인 했습니까? – Jonny
네, 저는 그것이 State.valueOf()라고 생각합니다. 나는 갱신 할 것이다. – Thufir