Promebla Condicion if (n4 ="SI")

Tonny34

Bovino maduro
#1
Hola que tal bakunos!! pueden echarme la mano con este codigo!! es algo sencillo pero no le encuentro!! tengo mucho que no uso el JAVA y ando en apuros con este codigo jeje, espero me puedan ayudar...

Se trata de acer un tipo TEST, el programa te hara unas preguntas, el usuario contesta solamente SI o NO, y en base a eso dira un resultado, en este caso solo ingnores las preguntas que puse jeje, algo asi es.

_______________________
Código:
import javax.swing.*;
 class Test
 {
  public static void main(String a[])
  {
      String num1,num2,num3,num4,num5,num6,num7,num8,num9,num10;
     int n1,n2,n3,n4,n5,n6,n7,n8,n9,n10;
      int contador=0;
      num1=JOptionPane.showInputDialog("¿Te gusta estudiar?");
      n1=Integer.parseInt(num1);
      if (n1 = "SI")
            contador = contador +1;
     num2=JOptionPane.showInputDialog("¿Te gusta bailar?");
      n2=Integer.parseInt(num2);
      if (n2 = "SI")
            contador = contador +1;
      num3=JOptionPane.showInputDialog("¿Te gusta leer?");
      n3=Integer.parseInt(num3);
      if (n3 = "SI")
            contador = contador +1;
      num4=JOptionPane.showInputDialog("¿Sales cada fin de semana siempre?");
      n4=Integer.parseInt(num4);
      if (n4 ="SI")
            contador = contador +1;
      num5=JOptionPane.showInputDialog("¿Tomas debidas alcoholicas cuando sales?");
      n5=Integer.parseInt(num5);
      if (n5 ="SI")
            contador = contador +1;
      num6=JOptionPane.showInputDialog("¿Estudias los domingos?");
      n6=Integer.parseInt(num6);
      if (n6 ="SI")
            contador = contador +1;
      num7=JOptionPane.showInputDialog("¿Cumples con tus tareas siempre?");
      n7=Integer.parseInt(num7);
      if (n7 ="SI")
            contador = contador +1;
      num8=JOptionPane.showInputDialog("¿Sales entre semana?");
      n8=Integer.parseInt(num8);
      num9=JOptionPane.showInputDialog("¿Eres atrevida(o)?");
      n9=Integer.parseInt(num9);
      if (n5 ="SI")
            contador = contador +1;
      num10=JOptionPane.showInputDialog("¿Siempre estas en tu casa?");
      n10=Integer.parseInt(num10);
      if (n5 ="SI")
            contador = contador +1;
      if(contador <= 4)
          System.out.println("Tu eres Responsable y Estudioso(a)");
      else
          System.out.println("Tu eres Irresponsable y Burro(a)");
  }
 }
________________________________

ahorita el error qe me da con esto es el

Código:
if (n5 ="SI")
            contador = contador +1;
creo qe al hacer la condicion el "SI" esta mal!! ayuda porfavor! =/

lo estoy haciendo en JGrasp!!

Saludos bakunos!
 

Y3K

Bovino Milenario
#2
La neta no sé nada de Java... Pero, ¿podrías hacer el delicado favor de envolver tu código en las etiquetas correspondientes (
Código:
)? Así "sin formato" está algo complicado de leer.

Gracias.
 

Tonny34

Bovino maduro
#3
La neta no sé nada de Java... Pero, ¿podrías hacer el delicado favor de envolver tu código en las etiquetas correspondientes (
Código:
)? Así "sin formato" está algo complicado de leer.

Gracias.[/quote]

OK, tratare, no posteo seguido xD gracias :chavo:
 

Y3K

Bovino Milenario
#4
OK, tratare, no posteo seguido xD gracias :chavo:
Muchas gracias compañero, se ve mucho más legible de esa manera. Aún así, recomendaría que usaras saltos de linea en donde se "parta" el código, para hacerlo aún un poco más legible ;)

Y con respecto a tu problema, te repito: NO sé Java, pero siento que es uno de esos errores "tontos" en dónde se te fue una comilla de más o algo así. Revisa la documentación oficial, segurísimo que eso te saca de las dudas ;)
 
#5
Estas asignando no comparando. Lo correcto es

if (n5 =="SI")
contador = contador +1;

Algo básico en programación.

Saludos.
 

Tonny34

Bovino maduro
#7
Estas asignando no comparando. Lo correcto es

if (n5 =="SI")
contador = contador +1;

Algo básico en programación.

Saludos.
Si compañero Bakuno, ya lo probe, mira estos errores me da::

Código:
 ----jGRASP exec: javac -g C:\Documents and Settings\Clientes\Escritorio\Programacion Java\Test.java

Test.java:13: incompatible types
found   : int
required: boolean
      if (n1 = "si")
              ^
Test.java:17: operator == cannot be applied to int,java.lang.String
      if (n2 == "si")
                 ^
Test.java:21: operator == cannot be applied to int,java.lang.String
      if (n3 == "si")
                 ^
Test.java:25: operator == cannot be applied to int,java.lang.String
      if (n4 == "si")
                 ^
Test.java:29: operator == cannot be applied to int,java.lang.String
      if (n5 == "si")
                 ^
Test.java:33: operator == cannot be applied to int,java.lang.String
      if (n6 == "si")
                 ^
Test.java:37: operator == cannot be applied to int,java.lang.String
      if (n7 == "si")
                 ^
Test.java:43: operator == cannot be applied to int,java.lang.String
      if (n5 == "si")
                 ^
Test.java:47: operator == cannot be applied to int,java.lang.String
      if (n5 == "SI")
                 ^
9 errors
espero me puedan ayudar =(

he de estar mal en el tipo de dato o algo asi =( :( :(
 
#10
Lo que pasa es que tienes int y estas comparando/almacenando con un String, si solo piensas en poner SI y No deberías cambiar el tipo de int a boolean y almacenar TRUE o FALSE.

Saludos.
 
#12
Mira, no se porqué pero siento que tu no programas para nada ni nunca lo has hecho, lo que preguntas es algo extremadamente sencillo y creo que lo que tu haces es copiar fragmentos de código de otros y cambiarles cosas.

Son varios tipos de datos (No te pondré todos):
int (Entero)
String (Cadena de Texto)
Boolean(Verdadero y Falso)

Lo que tu haces es decir.

1 es igual a "SI"? (Bueno esto es lo que querías hacer pero en realidad tenias 1 es "SI")
lo que tu quieres hacer es
TRUE == TRUE?
o FALSE == TRUE?

y eso se hace con un booleano.

private boolean aceptar;

if(aceptar == TRUE){
CODIGO;
}

else
CODIGO;


y eso es todo.
 

RAZA

Bovino maduro
#13
Compi esto no es de saber o no java, tus errores son de lógica de programación, pero ya el compañero bacuno EduardoRT te resolvió el problema!, un tip que te doy es, no nada mas veas el error, leelo y comprendelo, ahi te esta diciendo todo muy claro!!("incompatible types","found : int required: boolean","operator == cannot be applied to int,java.lang.String" )
ya quedo pues
P A Z!
 
#14
Sabes, me da la impresion de que tu no hiciste el codigo ya que es algo muy basico.

No te dire la respuesta a tu problema, lo que si te dire es que estas comparando tipos de datos diferentes.
 
#15
lo que pasa que esta comparando un valor de tipo INT con una valor de tipo STRING, y los valores de n1....nn, no esta inicializados aunque esos errores todavia no te los marca, si deseas comparar string seria de la siguiete manera ejemplo:

String cad="hola";
String cadena2="Hola2";

if(cad.equals(cadena2)){
System.out.println("las cadenas son iguales");
}

cualquier otra duda, pregunta¡¡¡¡¡¡¡¡¡¡
 
#16
Hola que tal, primero concuerdo con algunos colegas, en que lo que preguntas es más bien un error de lógica y no precisamente de programación, sin embargo también es compresible que si estás iniciando sea un tanto difícil, mira te dejo una posible solución a tu problema y espero este pequeño código te genera más dudas para que incrementes tu conocimiento.

Código:
/**
 *
 * @author fenix
 */
public class Test {

    boolean[] respuestas;
    final int NUM_PREGUNTAS = 3;
    String[] preguntas = {
        "Pregunta 1",
        "Pregunta 2",
        "Pregunta 3"
    };

    // Constructor
    public Test() {
        this.respuestas = new boolean[NUM_PREGUNTAS];
    }

    public void aplicarTest() {
        for (int i = 0; i < preguntas.length; i++) {
            String resp = JOptionPane.showInputDialog(null,preguntas[i],"Preguntas",JOptionPane.QUESTION_MESSAGE);
             this.respuestas[i] = 
                     (resp.compareTo("Sí")==0
                     || resp.compareTo("Si")==0
                     || resp.compareTo("SI")==0
                     || resp.compareTo("SÍ")==0
                     )?
               true: false;
        }
    }

    public void imprimirRespuestas(){
        for(int i=0; i<respuestas.length; i++){
            if(respuestas[i])
                JOptionPane.showMessageDialog(null, "Respuesta " + i + ": SI");
            else JOptionPane.showMessageDialog(null, "Respuesta " + i + ": NO");
        }
    }
}
 
#17
Para probarlo únicamente crea una clase con el método Main como la que a continuación te presento.
Código:
/**
 *
 * @author fenix
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Test test =new Test();
        test.aplicarTest();
        test.imprimirRespuestas();

    }

}
Por cierto invito a la comunidad bakuna a darse una vuelta por un sitio que acabo de crear quizá sea de su interés. Es un grupo que acabamos de crear unos amigos y su servidor en la facultad.
http://fatum.cs.buap.mx
 
#18
No sé que paso con la respuesta anterior, pero aqui está otra vez una posible solución

Código:
import javax.swing.JOptionPane;

/**
 *
 * @author fenix
 */
public class Test {

    boolean[] respuestas;
    final int NUM_PREGUNTAS = 3;
    String[] preguntas = {
        "Pregunta 1",
        "Pregunta 2",
        "Pregunta 3"
    };

    // Constructor
    public Test() {
        this.respuestas = new boolean[NUM_PREGUNTAS];
    }

    public void aplicarTest() {
        for (int i = 0; i < preguntas.length; i++) {
            String resp = JOptionPane.showInputDialog(null,preguntas[i],"Preguntas",JOptionPane.QUESTION_MESSAGE);
             this.respuestas[i] = 
                     (resp.compareTo("Sí")==0
                     || resp.compareTo("Si")==0
                     || resp.compareTo("SI")==0
                     || resp.compareTo("SÍ")==0
                     )?
               true: false;
        }
    }

    public void imprimirRespuestas(){
        for(int i=0; i<respuestas.length; i++){
            if(respuestas[i])
                JOptionPane.showMessageDialog(null, "Respuesta " + i + ": SI");
            else JOptionPane.showMessageDialog(null, "Respuesta " + i + ": NO");
        }
    }
}
 
#19
pero es muy importante lo que dijo el último


aunque resolverias el problema de los tipos incompatibles, el if en cadenas de texto a diferencia de los lenguajes microsoft, php y casi la absoluta mayoria, en java no se compara como se hace en aquellos, sino que se pregunta sobre el metodo equals() de una de las variables y enviando la otra como parametro

ej:

if(variable1.equals(variable2)){
System.out.println("hay igualdad");
}
 

jmp87

Bovino maduro
#20
supongo q como dicen todos es cieto no puedes compara un numero con una cadena supongo que deberias comparar los datos con los valores string ya despues si se cumple la condicion entonces ahi conviertes el valor a int no se mucho de programacion pero es un punto de vista
 
Arriba