Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda con tablas de verdad y comprar String (contrario de String="")

Estas en el tema de Ayuda con tablas de verdad y comprar String (contrario de String="") en el foro de Java en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/12/2009, 14:54
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 1 mes
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!
  #2 (permalink)  
Antiguo 10/12/2009, 22:17
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 15 años
Puntos: 1
Respuesta: Ayuda con tablas de verdad y comprar String (contrario de String="")

ya te lo saque de hay

dejame decirte que tienes errores en tu codigo en otras partes.





package javaapplication26;

import javax.swing.JOptionPane;

/**
*
* @author richar
*/
public class Main {

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



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

//Entrada

///vas a utilizar una bandera

int aux = 0;





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


do{

if(nombre.equals("") && a1.equals("")){

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?");
aux=0;



}else{

aux=1;
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








}while (aux!=0);




}}
  #3 (permalink)  
Antiguo 10/12/2009, 22:20
 
Fecha de Ingreso: mayo-2009
Mensajes: 76
Antigüedad: 15 años
Puntos: 1
Respuesta: Ayuda con tablas de verdad y comprar String (contrario de String="")

hace mas rondas de las que deberia. verifica eso
  #4 (permalink)  
Antiguo 11/12/2009, 08:39
 
Fecha de Ingreso: marzo-2008
Mensajes: 30
Antigüedad: 16 años, 1 mes
Puntos: 0
Respuesta: Ayuda con tablas de verdad y comprar String (contrario de String="")

Buenop, al final le eché horas y me calente mucho la cabeza y lo saque de otra manera... :D

Una lastima que el examen lo tuviese esta mañana (soy de España) y me acoste a las 3:30 de la mañana con esto.. u.u

Bueno, aqui os dejo el codigo como lo entegue al profesor, y parece que funciona muy bien... o por lo menos da buenos resultados.. ^^

Código:
public static void main (String[] args){

    //Declaraciones de las variables

    int numero1=0, numero2=0, rondas, signo=0, nivel, error=1, respuesta=0, resultado=0, repeticiones=0, puntuacionJ1=0, puntuacionJ2=0, porcientoJ1=0, porcientoJ2=0;
    String nombre="", nombre2="", a1=""/*rondas*/, b1/*respuesta*/, dificultad="", multijugador="";
    long tiempoInicio;
    float totalTiempoJ1=0, totalTiempoJ2=0;

    //Entrada. Esta hecha con un bucle "do" para poder solicitar nuevamente los datos en caso de error o dejar el cuadro en blanco.
    do
    {
        switch (error)
        {

                case 1:
                       JOptionPane.showMessageDialog(null,"Bienvenido a Entrenador Cerebral.");
                       multijugador=JOptionPane.showInputDialog("Desea Activar el Modo Multijugador (para Dos jugadores)? si/no");
                       a1=JOptionPane.showInputDialog("¿Cuántas rondas desea jugar?");
                       dificultad=JOptionPane.showInputDialog("Selecciona la Dificultad:\n Introduce '1' si quieres jugar en modo facil.\n Introduce '2' si quieres jugar en modo medio.\n Introduce '3' si quieres jugar en modo dificil");
                break;

                case 2:
                       multijugador=JOptionPane.showInputDialog("No ha introducido bien los datos o ha dejado un campo en blanco.\n Desea Activar el Modo Multijugador (para Dos jugadores)? si/no");
                       a1=JOptionPane.showInputDialog("¿Cuántas rondas desea jugar?");
                       dificultad=JOptionPane.showInputDialog("Selecciona la Dificultad:\n Introduce '1' si quieres jugar en modo facil.\n Introduce '2' si quieres jugar en modo medio.\n Introduce '3' si quieres jugar en modo dificil");
                break;

        }
        error++;

     }
     while ((multijugador.equals("")) || (a1.equals("")) || (dificultad.equals("")));

      rondas=Integer.parseInt(a1);
      nivel=Integer.parseInt(dificultad);

     // PROCESO En este apartado empieza el proceso diferenciando en un bucle "if" si el usuario ha seleccionado el modo multijugador o no.
     // Aqui empueza el modo multijugador para dos personas.
     if (multijugador.equals("si"))
     {

            nombre=JOptionPane.showInputDialog("Dame el nombre de jugador 1");
            nombre2=JOptionPane.showInputDialog("Dame el nombre de jugador 2");
            //Empieza la ronda para Jugador 1
            JOptionPane.showMessageDialog(null,"Adelante Jugador 1 Pulse Aceptar.");

            //Empieza a contar el tiempo cronometrado
            tiempoInicio = System.currentTimeMillis();


            do
            {

                //opciones de juego segun la dificultad del nivel
                switch (nivel)
                {
                    case 1:
                        //Generacion de Numeros Aleatorios modo facil
                        numero1=(int)(Math.random()*10);
                        numero2=(int)(Math.random()*10);
                        signo=(int)(Math.random()*4);
                    break;

                    case 2:
                        //Generacion de Numeros Aleatorios modo medio
                        numero1=(int)(Math.random()*20);
                        numero2=(int)(Math.random()*20);
                        signo=(int)(Math.random()*4);
                    break;

                    case 3:
                        //Generacion de Numeros Aleatorios modo dificil
                        numero1=(int)(Math.random()*50);
                        numero2=(int)(Math.random()*50);
                        signo=(int)(Math.random()*4);
                    break;
                }

                //sonido caracteristico de las preguntas
                java.awt.Toolkit.getDefaultToolkit().beep();
                //Formulacion de las preguntas y lectura de las respuesas
                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)
                {
                    puntuacionJ1++;
                }

            }


            while (rondas!=repeticiones);
            //Resultados para la prueba del Jugador 1
            totalTiempoJ1 = (System.currentTimeMillis() - tiempoInicio)/1000f;

            porcientoJ1=((puntuacionJ1*100)/rondas);

            JOptionPane.showMessageDialog(null,"Bueno "+nombre+" tu puntuacion ha sido del "+porcientoJ1+"%");
            JOptionPane.showMessageDialog(null,"Tu tiempo ha sido de: " + totalTiempoJ1 + " segundos");

            //Empieza la ronda para Jugador 2
            repeticiones = 0;
            JOptionPane.showMessageDialog(null,"Adelante Jugador 2 Pulse Aceptar.");
            tiempoInicio = System.currentTimeMillis();



            do
            {

                //opciones de juego segun la dificultad del nivel
                switch (nivel)
                {
                    case 1:
                        //Generacion de Numeros Aleatorios modo facil
                        numero1=(int)(Math.random()*10);
                        numero2=(int)(Math.random()*10);
                        signo=(int)(Math.random()*4);
                    break;

                    case 2:
                        //Generacion de Numeros Aleatorios modo medio
                        numero1=(int)(Math.random()*20);
                        numero2=(int)(Math.random()*20);
                        signo=(int)(Math.random()*4);
                    break;

                    case 3:
                        //Generacion de Numeros Aleatorios modo dificil
                        numero1=(int)(Math.random()*50);
                        numero2=(int)(Math.random()*50);
                        signo=(int)(Math.random()*4);
                    break;
                }

                //sonido caracteristico de las preguntas
                java.awt.Toolkit.getDefaultToolkit().beep();
                //Formulacion de las preguntas y lectura de las respuesas
                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)
                {
                    puntuacionJ2++;
                }

            }
            while (rondas!=repeticiones);
            //Resultados para la prueba del Jugador 1
            totalTiempoJ2 = (System.currentTimeMillis() - tiempoInicio)/1000f;

            porcientoJ2=((puntuacionJ2*100)/rondas);

            JOptionPane.showMessageDialog(null,"Bueno "+nombre2+" tu puntuacion ha sido del "+porcientoJ2+"%");
            JOptionPane.showMessageDialog(null,"Tu tiempo ha sido de: " + totalTiempoJ2 + " segundos");

            //Resultados y Ganadores del modo Multijugador
[...] (no cabe en el post)
Buenop, si alguien lo necesita, ahi se lo dejo..

Un saludo y Gracias!

PD: empece con java hace escaso un mes, es mi primer año de estudios, y no me entero de mucho, espero que me veais bastante por aqui..
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:36.