Help me please!!!!!!!!!!!

SdRr
03 de Marzo del 2005
bueno antes que nada hola :), miren tengo un problema que a la mejor es insignificante para los que conocen, pero para mi se me ha echo complicado, tengo el siguiente codigo, que esta con el formato de netbeans:

import java.io.*;
import java.lang.*;


class leer
{
public void lectura()
{
System.out.print ("hola");
}
}

public class ciclos {

/** Creates a new instance of ciclos */
public ciclos() {

}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
leer p = new leer();

char resp = 's';
//leer pos = new leer();
do
{
//System.out.println ("h");
p.lectura();
try
{
resp='n';
resp = (char)System.in.read();
}
catch (java.io.IOException ioex) {}
}while (resp != 'n');
}
}
el problema es el siguiente:
cuando lo entra la primera vez me muestra la palabra hola una vez, pero las siguientes veces que le doy mientras resp diferente de n, me lo manda 2 veces, osea me hace lo siguiente "holahola", y solamente debe de aparecer una vez, si me pueden ayudar muchas gracias :)

David
03 de Marzo del 2005
Pues muy sencillo.

Lo que estás haciendo es un bucle que:
Imprime "hola"
Lee un carácter de la entrada estándar
y lo repite mientras el carácter que lee sea distinto de 'n'.

Hasta aquí todo bien. Lo malo es que lo que lees con read() de la entrada estándar tienes que validarlo pulsando Enter y ahí viene la tangana, porque ya no estás comparando sólo el primer carácterque introduces con 'n', sino también el retorno de carro y el avance de línea (retorno de carro si funcionas en entorno UX).

Lo que quieres hacer funcionará también con:

public class ciclos {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String resp = "s";
leer p = new leer();

//leer pos = new leer();
do {
//System.out.println ("h");
p.lectura();
try {
resp = br.readLine().toLowerCase();
if (resp.length() == 0)
resp = "s";
}
catch (java.io.IOException ioex) {

}
} while (resp.charAt(0) != 'n');
}
}

¡Ah! Y no hace falta que pongas import java.lang.*; Se importa siempre!!!

Salud

David