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

Como utilizar la sentencia IF

Estas en el tema de Como utilizar la sentencia IF en el foro de Java en Foros del Web. Hola a todos de la comunidad tengo un problema con la sentencia IF en Java. Resulta que lo quiero que haga el codigo JAVA es ...
  #1 (permalink)  
Antiguo 18/05/2012, 14:47
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 3
Pregunta Como utilizar la sentencia IF

Hola a todos de la comunidad tengo un problema con la sentencia IF en Java. Resulta que lo quiero que haga el codigo JAVA es lo siguiente:
1._ Hago un For desde 1 hasta 23.
2._ Tengo dos registros que almacenan cadenas vacias " ", y cadenas con texto " Denominacion NOTA ".
3._ registro[i] es mi registro de 23 campos, en donde hay cadenas vacias y no vacias y registroTemp2[j] que tiene 23 campos igual al anterior. Este debe almacenar solamente las cadenas no vacias de registro[i] -->(i= indice de registro[i] ] ) ---> ( j= indice de registroTemp[j] ).
4._ luego la sentencia IF lo que debe hacer es recorrer el registro[i] y si encuentra un campo diferente a vacio entonces lo copia en registroTemp2[j], si por el contrario la sentencia es vacia se debe copiar en registroTemp2[j] campo vacio.

Lo cierto es que no se cumple esta sentencia If y copia todo lo que tiene registro[i] en registroTemp2[j] sin importar si esta vacia o no. Porque lo que quiero es quitar del arreglo [i] los campos vacios y ordenarlos en uno nuevo llamado registroTemp2[j].

Si me pueden ayudar es que lo necesito urgente, Gracias. Aqui les dejo mi sentencia:

Código PHP:
       j 2;
       for (
int i2<= 23 ;i++){
                if (
registro[i]!= null && !registro[i].equals("") ) {
                 
registroTemp2[j]= registro[i];
                 
j++;
                 } else {
                 
registroTemp2[j]= " ";
                 } 
__________________
En Dios creeemos.
  #2 (permalink)  
Antiguo 18/05/2012, 15:05
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Como utilizar la sentencia IF

j solo varía cuando encuentra un registro con valor, cuando guardas un valor la siguiente vez que esté vacío lo borra.

¿Por qué no utilizas i para los dos?
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 18/05/2012, 19:20
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 3
Información Respuesta: Como utilizar la sentencia IF

Porque i va a recorrer el registro[i] con el for (si te das cuentas el for depende de este indice). Durante la ejecucion de bucle for, cada vez que encuentre un campo vacio o nulo se incrementa i, y se sigue corriendo el for. Ahora,cuando encuentra un campo diferente a vacio lo copia en registroTemp2[j], aqui es donde entra el indice j , y se incrementa j para que se siga ejecutando el bucle.
Esto se repite hasta que recorra todo el registro[i].
Espero haberme explicado bien, gracias.
__________________
En Dios creeemos.
  #4 (permalink)  
Antiguo 19/05/2012, 00:02
 
Fecha de Ingreso: diciembre-2008
Ubicación: PERU
Mensajes: 294
Antigüedad: 15 años, 4 meses
Puntos: 23
Respuesta: Como utilizar la sentencia IF

Has intentado hacer un IF para el caso contraio del If ??

} else {
if (registro[i]= null && registro[i].equals("") ) {
}
....

Creo que el operador && es conjuncion , osea tine que cumplir esas dos condiciones que dices (!= y !reg..) .
Deberias usar el operador de Disyuncion || , para el OR. condicion 1 o condicion 2


Última edición por yuo2; 19/05/2012 a las 00:17
  #5 (permalink)  
Antiguo 19/05/2012, 03:10
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Como utilizar la sentencia IF

Voy a tratar de ser más claro.

Tú algoritmo está mal y es imposible que haga lo que quieres. Puedes tratar de explicar lo que crees que hace, pero no es lo que hace. Olvida lo que has hecho y parte de cero.

Cita:
si encuentra un campo diferente a vacio entonces lo copia en registroTemp2[j], si por el contrario la sentencia es vacia se debe copiar en registroTemp2[j] campo vacio.
Liosa forma de decir, que vacío o no, se copie a registroTemp2. Resumiendo, tú quieres copiar un array completo en otro.

Por otro lado

Cita:
Durante la ejecucion de bucle for, cada vez que encuentre un campo vacio o nulo se incrementa i, y se sigue corriendo el for. Ahora,cuando encuentra un campo diferente a vacio lo copia en registroTemp2[j], aqui es donde entra el indice j , y se incrementa j
Como te he dicho, la única razón para usar dos índices (j,i) sería que solo quisieses copiar los valores no vacíos, pero en ese caso te sobra el contenido del else, ya que repito, al no incrementar j, borras el último registro escrito de registroTemp2[] en cuanto en registro[] hay uno vacío.


Cita:
Iniciado por yuo2
Has intentado hacer un IF para el caso contraio del If ??

} else {
if (registro[i]= null && registro[i].equals("") ) {
}
¿Eso qué es? Lo que has puesto sería un NullPointerException
No entiendo nada de tu repuesta.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #6 (permalink)  
Antiguo 19/05/2012, 07:02
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Como utilizar la sentencia IF

Gracias por su colaboración y ya pude solventar el problema eliminando la sentencia ELSE que estaba demás, y el algoritmo funciona correctamente.
Lo que necesitaba era copiar los datos diferentes a vacíos en otro registro, por eso es que utilizo dos indices, el indice j se incrementa únicamente cuando encuentra un campo diferente de vacio, y al incrementarlo ubico el puntero en la próxima posición del vector, y de esta manera puedo seguir copiando los campos distintos a vacios, a medida que se va recorriendo el registro original con el indice i.
Gracias de todos modos por su ayuda!!!
__________________
En Dios creeemos.
  #7 (permalink)  
Antiguo 20/05/2012, 04:22
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Como utilizar la sentencia IF

1º Lo que preguntaste no es lo mismo que lo que querías hacer. Revisa siempre tus preguntas para que sean lo más claras y correctas posible, faclita que te ayuden.

2º Si tu algoritmo no funciona, está mal. Si a tu algoritmo le sobra algo, está mal. Es importante aceptar las correcciones y no terquear con que nuestro código escorrecto, recordemos que pedimos ayuda porque no funciona.

3º En castellaano gracias de todos modos, significa que aunque no te hayan podido ayudar lo agradeces Y este no es el caso, ya que como puedes ver, lo que dices que has hecho para solucionarlo, es justo lo que te dije que hicieras, eliminar el else.

Cita:
Como te he dicho, la única razón para usar dos índices (j,i) sería que solo quisieses copiar los valores no vacíos, pero en ese caso te sobra el contenido del else, ya que repito, al no incrementar j, borras el último registro escrito de registroTemp2[] en cuanto en registro[] hay uno vacío.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #8 (permalink)  
Antiguo 20/05/2012, 21:02
Avatar de venezolana32  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 3
Exclamación Respuesta: Como utilizar la sentencia IF

Hola Xerelo, no estoy terqueando con mi algoritmo mi impresion la ver tu respuesta:

Cita:
Como te he dicho, la única razón para usar dos índices (j,i) sería que solo quisieses copiar los valores no vacíos, pero en ese caso te sobra el contenido del else, ya que repito, al no incrementar j, borras el último registro escrito de registroTemp2[] en cuanto en registro[] hay uno vacío.
es que no me entendiste por lo que recomiendo es que corras en frio ese algoritmo y te darás cuentas que el contenido ELSE lo quite por que estaba de sobra y no estaba mal.
Tu dices que borra el contenido del campo de la posición del ultimo registro, y yo te digo que no borra ninguna posición... ¿Porque? Te explico:

Al ejecutar el bucle i si se encuentra con un campo no vacio se guarda este contenido en la posición j del registroTemp[j], luego se incrementar esta posición en j + 1 esta va hacer la posicion actual a copiar, o sea , posicion registroTemp[j+1], luego si encuentro un campo en vacio en registro [i], lo que hace la sentencia ELSE es blanquear esa posicion j + 1, es decir, en registroTemp[j + 1] = " ".

Lo que hice fue optimizar el código, y bueno si, tome tu sugerencia para hacerlo, y otra cosa, cuando cree este tema lo hice pensando que el error estaba en la sentencia IF, con me ha pasado en otras oportunidades, y no en la ejecución del algoritmo.

Cita:
Lo cierto es que no se cumple esta sentencia If y copia todo lo que tiene registro[i] en registroTemp2[j] sin importar si esta vacia o no.
__________________
En Dios creeemos.
  #9 (permalink)  
Antiguo 21/05/2012, 00:33
 
Fecha de Ingreso: mayo-2012
Ubicación: tegucigalpa
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Como utilizar la sentencia IF

Cita:
Iniciado por venezolana32 Ver Mensaje
Hola a todos de la comunidad tengo un problema con la sentencia IF en Java. Resulta que lo quiero que haga el codigo JAVA es lo siguiente:
1._ Hago un For desde 1 hasta 23.
2._ Tengo dos registros que almacenan cadenas vacias " ", y cadenas con texto " Denominacion NOTA ".
3._ registro[i] es mi registro de 23 campos, en donde hay cadenas vacias y no vacias y registroTemp2[j] que tiene 23 campos igual al anterior. Este debe almacenar solamente las cadenas no vacias de registro[i] -->(i= indice de registro[i] ] ) ---> ( j= indice de registroTemp[j] ).
4._ luego la sentencia IF lo que debe hacer es recorrer el registro[i] y si encuentra un campo diferente a vacio entonces lo copia en registroTemp2[j], si por el contrario la sentencia es vacia se debe copiar en registroTemp2[j] campo vacio.

Lo cierto es que no se cumple esta sentencia If y copia todo lo que tiene registro[i] en registroTemp2[j] sin importar si esta vacia o no. Porque lo que quiero es quitar del arreglo [i] los campos vacios y ordenarlos en uno nuevo llamado registroTemp2[j].

Si me pueden ayudar es que lo necesito urgente, Gracias. Aqui les dejo mi sentencia:

Código PHP:
       j 2;
       for (
int i2<= 23 ;i++){
                if (
registro[i]!= null && !registro[i].equals("") ) {
                 
registroTemp2[j]= registro[i];
                 
j++;
                 } else {
                 
registroTemp2[j]= " ";
                 } 
La verdad no se si entendi tu idea, pero si entiendo:
Primero:
if (registro[i]!= null && !registro[i].equals("") )

No uses &&, usa ||, ya q no puede ser nulo y vacio a la ves.

Segundo: esto ” " no es una cadena vacia pq contiene un espacio, cheka eso y avisa
  #10 (permalink)  
Antiguo 22/05/2012, 01:10
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Como utilizar la sentencia IF

No se porque te saltas la posicion 0 del array, tampoco se porque no registro.length en vez 23, si cambias el tamaño del array tambien lo tienes que cambiar en el bucle.

incializa la j a 0 y elimina el else. La condicion esta bien. Lo unico malo de este codigo es que en el registroTemp2, todas las cadenas vacias te las quedan al final del array, no se si despues del for tendrias que crear un array con el tamaño de j para que solo tenga las cadenas no vacias.

Última edición por Erickvk; 22/05/2012 a las 01:48
  #11 (permalink)  
Antiguo 12/04/2013, 01:46
 
Fecha de Ingreso: abril-2013
Mensajes: 1
Antigüedad: 11 años
Puntos: 0
Respuesta: Como utilizar la sentencia IF

hola a todos
necesito ayuda con un programa que detecte cuando un caracter que se ingrese es o no alfanumerico solo que al correrlo no me detecta cuando no cumple la condicion.

cuando ingreso =)(/&%$$# o cualquier simbolo me marca que es alfanumerico y deberia decir que no lo es alguien puede ayudarme les dejo el codigo

import javax.swing.JOptionPane;
public class Caracter
{
public static void main(String[] args)
{
String cadena;
cadena=JOptionPane.showInputDialog("INGR… UN CARACTER");
char car = cadena.charAt(0);
{
if ((car>=48) || (car<=57) || (car>=65) || (car<=90) || (car>=97) || (car<=122))
JOptionPane.showMessageDialog(null,"E… CARACTER ES ALFANUMERICO");
else
JOptionPane.showMessageDialog(null,"E… CARACTER NO ES ALFANUMERICO");
}
}
}


gracias de antemano
  #12 (permalink)  
Antiguo 12/04/2013, 02:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 268
Antigüedad: 16 años, 7 meses
Puntos: 8
Respuesta: Como utilizar la sentencia IF

creo que lo mejor es usar expresiones regulares.

http://www.programacion.com/articulo...es_en_java_127
  #13 (permalink)  
Antiguo 12/04/2013, 02:15
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: Como utilizar la sentencia IF

isLetterOrDigit

http://docs.oracle.com/javase/6/docs...erOrDigit(char)

Y para la siguiente pregunta crea un nuevo hilo, no subas uno antiguo.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: sentencia
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 15:25.