Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/12/2009, 14:54
dasten
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 17 años
Puntos: 0
Ayuda con tablas de verdad y comprar String (contrario de String="")

Pues eso, tengo un problema y no se como solucionarlo, trabajo en lenguaje de Programacion Java, y tengo que comparar una serie de String, pero siguiendo las tablas de la verdad no me sale.
Es algo dificil de Explicar, aqui os pongo el Codigo...

Código:
int numero1, numero2, rondas, signo, error, respuesta=0 ,resultado=0, repeticiones=0, puntuacion=0, porciento;
    String nombre,a1/*rondas*/, b1/*respuesta*/;
    long tiempoInicio;
    float totalTiempo;

    //Entrada


        nombre=JOptionPane.showInputDialog("Bienvenido a Entrenador Cerebral.\nPor favor, introduzca su nombre");
        a1=JOptionPane.showInputDialog("¿Cuántas rondas desea jugar?");


       if ((nombre.equals(""))   &&   (a1.equals("")));
       {
           do
            {
                nombre=JOptionPane.showInputDialog("No ha introducido bien su nombre ó el numero de rondas.\nPor favor, introduzca su nombre");
                a1=JOptionPane.showInputDialog("¿Cuántas rondas desea jugar?");

            }
            while ((nombre.equals("")) || (a1.equals("")));
       }

        rondas=Integer.parseInt(a1);



    //Proceso

    tiempoInicio = System.currentTimeMillis(); //esto va antes del switch

    do
    {
        //Generacion de Numeros Aleatorios
        numero1=(int)(Math.random()*10);
        numero2=(int)(Math.random()*10);
        signo=(int)(Math.random()*4);



        switch(signo)
        {
                    case 0:
                         b1=JOptionPane.showInputDialog("Resultado de: "+numero1+"+"+numero2+"= ?");
                         respuesta=Integer.parseInt(b1);
                         resultado=numero1+numero2;
                         break;
                    case 1:
                         b1=JOptionPane.showInputDialog("Resultado de: "+numero1+"-"+numero2+"= ?");
                         respuesta=Integer.parseInt(b1);
                         resultado=numero1-numero2;
                        break;
                    case 2:
                         b1=JOptionPane.showInputDialog("Resultado de: "+numero1+"x"+numero2+"= ?");
                         respuesta=Integer.parseInt(b1);
                         resultado=numero1*numero2;
                        break;
                    case 3:
                         numero2=(numero2+1);
                         b1=JOptionPane.showInputDialog("Resultado de: "+numero1+"/"+numero2+"= ?");
                         respuesta=Integer.parseInt(b1);
                         resultado=numero1/numero2;
                        break;
        }



        repeticiones++;

        if (respuesta==resultado)
        {
            puntuacion++;
        }

    }
    while (rondas!=repeticiones);

    totalTiempo = (System.currentTimeMillis() - tiempoInicio)/1000f; //esto va al acabar el switch

    porciento=((puntuacion*100)/rondas);

    JOptionPane.showMessageDialog(null,"Bueno "+nombre+" tu puntuacion ha sido del "+porciento+"%");
    JOptionPane.showMessageDialog(null,"Tu tiempo ha sido de: " + totalTiempo + " segundos"); //esto va justo al final

En lo que me quiero centrar es en esto:




if ((nombre.equals("")) && (a1.equals("")));
{
do
{
nombre=JOptionPane.showInputDialog("No ha introducido bien su nombre ó el numero de rondas.\nPor favor, introduzca su nombre");
a1=JOptionPane.showInputDialog("¿Cuántas rondas desea jugar?");

}
while ((nombre.equals("")) || (a1.equals("")));
}



Estoy comparando las String Introducidas por el usuario, de forma de que cuando este deje el cuadro (la respuesta) vacia te indique que esta mal y que la repita, es decir, que repitas el bucle. Es decir, a ver si me explico bien...

Se ejecuta el programa, te pide dos datos, tu nombre y un numero , y quiero hacer lo siguiente:

(Nombre=true && numero=false) es falso, y te dice que esta mal.
(nombre=false && numero=true) es falso, y te dice que esta mal.
(nombre=false && numero=false) es falso, y te dice que esta mal.

El problema viene aqui cuando (nombre=true && numero=true) te devolveria verdadero, peero el problema viene cuando al ser verdadero y comparalo con "nada" (una string vacia String=""); se peta y me dice que esta mal.

Esto es proque sí puedo poner algo que se corresponda con una cadena vacia (String="") pero en cambio no puedo meter algo en una String que signifique "todo" con la que pueda comprarlo.

No se si me entendeis, pero no me sale, si alguien tiene una idea o algo que me lo diga por favor, estoy algo pilladito por eso.. u.u

Pues nada mas, si necesitan alguna aclaracion o algo, diganmelo e intentare explicarme mejor, un saludo y Gracias!