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

problema logica

Estas en el tema de problema logica en el foro de Programación General en Foros del Web. if(this.cuenta.trim().length() != 10 || this.cuentaDestino.trim().length() != 14 || this.cuenta.trim().length() != 18 || this.cuenta.trim().length() != 16 ) ESTO ES = A ERROR que no deberia esto ...
  #1 (permalink)  
Antiguo 18/08/2006, 15:17
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años, 10 meses
Puntos: 0
problema logica

if(this.cuenta.trim().length() != 10 || this.cuentaDestino.trim().length() != 14 || this.cuenta.trim().length() != 18 || this.cuenta.trim().length() != 16 ) ESTO ES = A ERROR

que no deberia esto dejar pasar a todas a quellas cuentas que sean iguales a 10 , 14, 18, y 16 ???
__________________
necesito una firma

Última edición por kittya; 18/08/2006 a las 17:16 Razón: es una pregunta
  #2 (permalink)  
Antiguo 18/08/2006, 15:28
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 10 meses
Puntos: 47
Hola niñita... lo que tu codigo hace es todo lo contrario, dejar pasar a todas a quellas cuentas cuyas longitudes sean diferentes a 10 , 14, 18, y 16



Última edición por Developer9; 18/08/2006 a las 15:28 Razón: Faltó poner emoticón
  #3 (permalink)  
Antiguo 18/08/2006, 15:37
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años, 10 meses
Puntos: 0
Cita:
Iniciado por Developer9 Ver Mensaje
Hola niñita... lo que tu codigo hace es todo lo contrario, dejar pasar a todas a quellas cuentas cuyas longitudes sean diferentes a 10 , 14, 18, y 16


mmmm pues no la verdad es que no deja pasar ningun tamaño

entonces cual seria la corecta manera para solo permitir esos tamaños ???
__________________
necesito una firma
  #4 (permalink)  
Antiguo 18/08/2006, 15:50
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 10 meses
Puntos: 47
if(this.cuenta.trim().length() = 10 || this.cuentaDestino.trim().length() = 14 || this.cuenta.trim().length() = 18 || this.cuenta.trim().length() = 16 )

Tu codigo es de C#, supongo que utilizas Visual Studio, recomendaría hacerle un brake a la ejecución de la aplicación y hacerle una Inspección al valor que arroja this.cuenta.trim().length() para asegurarnos de lo que estamos comparando
  #5 (permalink)  
Antiguo 18/08/2006, 16:01
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años, 10 meses
Puntos: 0
es java y notese que es != diferente de
no = que seria en java ==


y funciona con solo una condicion
si pongo esto


if(this.cuenta.trim().length() != 10 ) si agrego otra condicion

f(this.cuenta.trim().length() != 10 || this.cuentaDestino.trim().length() != 14) ya no me deja pasar nada
__________________
necesito una firma
  #6 (permalink)  
Antiguo 18/08/2006, 16:43
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 10 meses
Puntos: 47
Si el valor de cuenta es diferente de 10 debería de pasar por el primer if y tambien por la el segundo if ya que no importa lo que tenga cuentadestino si this.cuenta.trim().length() != 10 generaría un valor logico true, y como el operador entre los dos es || entonces el resultado total sería true. Ta raro tu caso

Última edición por Developer9; 18/08/2006 a las 16:46 Razón: =)
  #7 (permalink)  
Antiguo 18/08/2006, 17:42
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
Developer9 luego preguntas por que el asombro cuando contestas bien...

en C# y asi como en .NET se usan propiedades para Length.

otro error es el operador logico de comparacion. pero bueno.


kittia, con sus deficiencias Developer9 tienen razon ya que lo que hace tu bloque condicional es permitir el paso de aquellos que sean diferentes a 10, 14, 16,18

si tu bloque if es:

if(condicion)
{
//aqui trabajaras con los valores que pasen por la condicion.
}

se supone que tendrias que usar == en lugar de !=

ya que si

tienes:

if(this.cuenta.trim().length() != 10 || this.cuentaDestino.trim().length() != 14 || this.cuenta.trim().length() != 18 || this.cuenta.trim().length() != 16 )
{
//En este bloque solo pasaran aquellos que sean diferentes a 10, 14, 16, 18
}

intenta con:

if(this.cuenta.trim().length() == 10 || this.cuentaDestino.trim().length() == 14 || this.cuenta.trim().length() == 18 || this.cuenta.trim().length() == 16 )
{
}

de esta forma si alguna cuenta tienen 10, pasara porque es uno de las condiciones, si es 14, tambien pasara, etc.

pues eso.

espera creo que hay un error.

no se si se permita el uso del operador == de la forma en que lo intentas, espero que si, sino tendrias que enparejarlos.

if((this.cuenta.trim().length() == 10 )||( this.cuentaDestino.trim().length() == 14) || (this.cuenta.trim().length() == 18) || (this.cuenta.trim().length() == 16) )
{
}

tendre que probarlo antes y despues regreso a contarte.

Saludos.

Última edición por Nivel7; 18/08/2006 a las 17:50
  #8 (permalink)  
Antiguo 18/08/2006, 18:06
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
ya regrese, si, si funciona bien, el problema es el mencionado al pricipio.

tu condicion solo valida al cuantaDestino, ya que cuenta nunca podra tener 3 longitudes al mismo tiempo.

asi que cuenta si vale 10 pasara porque es diferente a 18 y 16.
lo mismo si vale 18 o 16.

pero te repito supongo que lo que quieres hacer es con el operador ==. mira aqui tienes un pequeño ejemplo:

public class Ejemplo
{
public static void main(String[] args)
{
int val1 = 10;
int val2 = 14;
int val3 = 18;
int val4 = 16;

if(val1 != 10 || val2 != 14 || val3 != 18 || val4 != 16)
{
System.out.println("Valor 1: " + val1 );
System.out.println("Valor 2: " + val2);
System.out.println("Valor 3: " + val3 );
System.out.println("Valor 4: " + val4);
}
else
{
System.out.println("No se cumple la condicion");
}
}
}

y el resultado es este:

>java Ejemplo
No se cumple la condicion
>Exit code: 0 Time: 0.217


ahora con :

public class Ejemplo
{
public static void main(String[] args)
{
int val1 = 10;
int val2 = 14;
int val3 = 18;
int val4 = 16;

if(val1 == 10 || val2 == 14 || val3 == 18 || val4 == 16)
{
System.out.println("Valor 1: " + val1 );
System.out.println("Valor 2: " + val2);
System.out.println("Valor 3: " + val3 );
System.out.println("Valor 4: " + val4);
}
else
{
System.out.println("No se cumple la condicion");
}
}
}

el resultaod es:

>java Ejemplo
Valor 1: 10
Valor 2: 14
Valor 3: 18
Valor 4: 16
>Exit code: 0 Time: 0.221

ahi te dejo eso...

Saludos
  #9 (permalink)  
Antiguo 18/08/2006, 18:40
Avatar de kittya  
Fecha de Ingreso: abril-2004
Mensajes: 260
Antigüedad: 20 años, 10 meses
Puntos: 0
Cita:
Iniciado por Nivel7 Ver Mensaje
logico de comparacion. pero bueno.


kittia, con sus deficiencias Developer9 tienen razon ya que lo que hace tu bloque condicional es permitir el paso de aquellos que sean diferentes a 10, 14, 16,18

Saludos.
nop

solo para aclarar
la condicion siempre se cumple no deja pasar nada


en tu ejemplo tienes varias variables yo solo uso una asi

public class Ejemplo {

public static void main(String[] args) {


int val = 10;

if(val != 10 || val != 14 || val != 18 || val != 16)
{

System.out.println("Valor 4: " + val);
}
else
{
System.out.println("No se cumple la condicion");
}
}
}


resultado Valor 4: 10

y la condicion siempre se cumple

lo que quiero es que si la cuenta es diferente de esos numeros me mande un error por eso no manejo que sean iguales

y lo que estaba mal era el operador en lugar de ser or || debe ser and &&

gracias
__________________
necesito una firma
  #10 (permalink)  
Antiguo 18/08/2006, 19:53
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
bueno si tu lo dices adelante.

lo de la variable unica en tu caso lo explique antes .
si usas el operador && siempre se cumplira tu condicion, ya que como te mencione antes cuenta nunca tendra 3 longitudes por tando es inutil hacer, las 3 comparaciones.

el ejemplo solo lo hago para que veas las diferencias entre el operador == y el !=.

en tu ejemplo, siempre se evaluara a true.

ya que val nunca tendra los 3 valores.

si quieres dale el valor 20 .

ya que es diferente a 10, 16 y 18, se imprimira su valor. y segun veo no es eso lo que quieres.


en fin.

Saludos.

Última edición por Nivel7; 18/08/2006 a las 20:00
  #11 (permalink)  
Antiguo 19/08/2006, 10:59
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 10 meses
Puntos: 47
Si cambian el operador or a and nunca va a ser true, no sería lógico preguntar si la misma variable es diferente de 10, 16, etc ya que a lo mucho una de las condiciones será verdadera y el resto serán falsas

Cita:
Iniciado por Nivel7 Ver Mensaje
Developer9 luego preguntas por que el asombro cuando contestas bien...

en C# y asi como en .NET se usan propiedades para Length.
otro error es el operador logico de comparacion. pero bueno...
No entendí lo que ta en negrita.

Cita:
Iniciado por Nivel7 Ver Mensaje
Developer9 luego preguntas por que el asombro cuando contestas bien...
Dije algo equivocao?
  #12 (permalink)  
Antiguo 19/08/2006, 13:46
 
Fecha de Ingreso: abril-2006
Ubicación: Acapulco Gro. México
Mensajes: 483
Antigüedad: 18 años, 9 meses
Puntos: 2
Developer9, te menciono eso, ya que kittya esta usando cuenta.trim().length()

y tu pensaste que era C#.

en C# tanto las funciones como propiedades se capitalizan ademas de que Length es una propiedad y no una funcion como en Java.

por si no recuerdas en un hilo diferente a este tanto MaxExtreme como yo mencionamos que tu comentario eramuy bueno.

pero que era raro que tus comentarios lo sean, he aqui el ejemplo.

en realidad nada de importancia, solo por comentar. unos pequeños errores cualquiera los comete, en lo demas estas bien.

lo que no comprendo es porque kittya insiste en usar !=

en fin uno solo aconseja.

Saludos.
  #13 (permalink)  
Antiguo 21/08/2006, 08:09
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años, 10 meses
Puntos: 47
Ah, no sabía que era java, estoy algo acostumbrado al C# que de primera pensé que era dicho lenguaje.


De todas formas ojala se haya superado el problema
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 12:49.