Não sai mais do laço

9 respostas
P

Ele não mais do laço, e tb não dá erro, e ele tb não entra em loop porque ele não fica mostrando infinitamente os System.out.println, ele simplesmente não mostra mais as mensagens que estão dentro do while mas tb não mostra a msg que “Sai do laço” que está logo abaixo ao laço,
o código:

sc = (SocketConnection) 
           Connector.open("socket://xxx.xxx.x.x:xxxx"); 
        os = sc.openOutputStream(); 
        is = sc.openInputStream(); 
        os.write(new String("PC2").getBytes()); 
        alert.setString("A transmissao foi efetuada com sucesso"); 
        alert.setType(AlertType.CONFIRMATION); 
        display.setCurrent(alert); 
        int c = 0; 
        StringBuffer string = new StringBuffer(""); 
        while ((c = is.read())!=-1) 
        { 
            string.append((char)c); 
            System.out.println("ouvindo no lado do palm = "+(char)c); 
            System.out.println("int valendo = "+c); 
        } 
        System.out.println("saiu do laço"); 
        System.out.println("string final = "+string.toString());

9 Respostas

P

a saída é a seguinte

ouvindo no lado do palm = s
int valendo = 115
ouvindo no lado do palm = u
int valendo = 117
ouvindo no lado do palm = b
int valendo = 98
ouvindo no lado do palm = g
int valendo = 103
ouvindo no lado do palm = r
int valendo = 114
ouvindo no lado do palm = u
int valendo = 117
ouvindo no lado do palm = p
int valendo = 112
ouvindo no lado do palm = o
int valendo = 111
ouvindo no lado do palm = 2
int valendo = 50
F

A compração do while não é com NULL?

P

se eu fazer com null, na compilação ele me dá o seguinte erro

TimeClientRecebe.java [55:1] operator != cannot be applied to int,<nulltype>
        while ((c = is.read())!=null)
                              ^
1 error
Errors compiling TimeClientRecebe.
_fs

public abstract int read()
throws IOException
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

É lançada alguma exceção? O programa termina, apesar de não executar as últimas linhas?

P
try {
        sc = (SocketConnection)
           Connector.open("socket://xxx.xxx.x.xx:xxxx");
        os = sc.openOutputStream();        is = sc.openInputStream();
        os.write(new String("PC2").getBytes());
        alert.setString("A transmissao foi efetuada com sucesso");
        alert.setType(AlertType.CONFIRMATION);
        display.setCurrent(alert); 
        int c = 0;
        StringBuffer string = new StringBuffer("");
        while ((c = is.read())!=-1)
        {
            string.append((char)c);
            System.out.println("ouvindo no lado do palm = "+(char)c);
            System.out.println("int valendo = "+c);
        }
        System.out.println("saiu do laço");
        System.out.println("string final = "+string.toString());
      } 
      catch(IOException e) {
         alert.setString("Não foi possível fazer a conexão com o servidor");
         alert.setType(AlertType.ERROR);
         display.setCurrent(alert);

      }

e a saída é aquela que eu postei antes, não dá erro, nada…

P

talvez vc não entenda de J2ME, mas ele tb não mostra aquele Alert que ele mostraria se desse algum problema

aborges

Pelo output que vc postou ele está saindo do loop sim!

Caso contrario ele nao pararia de dar prints com resultatos inesperados na tela, don’t you agree ?

P

mas acontece aquilo ali que eu disse, ele não mostra mais nada, não dá erro, simplesmente é como se a Thread parasse

rodc

a função read() só retorna -1 quando a conexão socket é fechada (ou pelo destino ou por outra thread). Se estás esperando o fim de uma string, tens de comparar com ‘\n’.

Criado 4 de agosto de 2004
Ultima resposta 14 de dez. de 2007
Respostas 9
Participantes 5