Impossible de parser un "String" en "int"
Bonjour, bonsoir.
Je suis actuellement en train de coder un petit pong en réseau via UDP (j'avais déjà réussi, si on peut dire, à le faire via TCP), mais actuellement je tombe sur un petit problème que je n'arrive pas à résoudre seul.
J'essaye tant bien que mal de convertir un string en int mais sans succès.
Voici mon code pour la classe d'envoie de donnée :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import java.net.*;
import java.io.*;
public class GameSockOut implements Runnable {
private DatagramSocket client;
private String msg;
static boolean sockRun = false;
public GameSockOut(DatagramSocket client) {
this.client = client;
}
@Override
public void run() {
while(true) {
try {
if(sockRun) {
byte [] buffer = new byte[30];
int port = 56000;
InetAddress adresse = InetAddress.getByName("127.0.0.1");
DatagramPacket packet = new DatagramPacket(buffer, buffer.length, adresse, port);
this.msg = "move-"+String.valueOf(GamePanel.y);
packet.setData(this.msg.getBytes());
this.client.send(packet);
}
} catch(IOException e) {}
}
}
} |
Et ma classe de réception :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| import java.net.*;
import java.io.*;
public class GameSockIn implements Runnable {
private DatagramSocket client;
private String msg;
public GameSockIn(DatagramSocket client) {
this.client = client;
}
@Override
public void run() {
while(true) {
try {
byte [] buffer = new byte[30];
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
this.client.receive(packet);
msg = new String(packet.getData());
System.out.println(msg);
if(msg.contains("move")) {
String [] info = msg.split("-");
System.out.println("Hey : "+Integer.parseInt(info[1]));
}
} catch (IOException e) {}
}
}
} |
Evidemment je passe par un serveur, la connexion, l'échange de données se fait sans problème entre les clients et le serveur.
Mais lorsque je bouge une de mes raquettes, le client correspondant devant recevoir l'information n'arrive pas à parser la chaine de caractère en un int.
Voici mon erreur :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Exception in thread "Thread-1" java.lang.NumberFormatException: For input string: "200"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at GameSockIn.run(GameSockIn.java:24)
at java.lang.Thread.run(Thread.java:745) |
Explication : mon client A envoie (move-200) au serveur la position de la raquette, qui renvoie à l'autre client B la position (toujours move-200), ce client B transforme le datagramme reçu (en gros un split sur "-"), et je récupère la chaine 200 pour la transformer en int.
J'ai essayé aussi Integer.valueOf(info[1]) mais ça ne marche pas non plus, j'obtiens la même erreur.
Merci pour votre aide éventuelle.