Título: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 03:20 am Hola queria ver quien me puede ayudar en este arreglo para que a la hora de imprimr el numero de el arreglo me de la posicion
import javax.swing.JOptionPane; public class InicArreglo{ public static void main (String args[]){ int arreglo[]={1,2,3,4,5,6,7,8,9,10}; int opc=Integer.parseInt(JOptionPane.showInputDialog("Dame un numero")); if(arreglo.length>=opc){ System.out.printf("El numero: "+opc+" se encuentra en el arreglo "); System.out.printf("En la posicion: "+arreglo.length); System.out.printf("\n%s%8s\n", "Indice", "valor"); for (int contador=1;contador<=arreglo.length;contador++) System.out.printf("%5d%8d\n", contador, arreglo[contador]); } else{ System.out.printf("EL numero: "+opc+" no se encuentra en el arreglo"); } } } Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 15:30 pm Hola. Cuando coloques un código utiliza las etiquetas de código GeShi (todo foro las tiene).
Para que funcione debes usar los Wrapper si quieres usar datos primitivos, en tu caso debes de usar la wrapper de int, que es la clase Integer. Código
El método indexOf(Object c) de la interface List, recibe un Object, es decir cualquier tipo de dato. Si le pasamos un 3 en lugar de un new Integer(3) la JVM hace un upcasting y lo convierte a Integer para que funcione. PD: Los arrays y las colecciones como Listas, inician de 0 -> n. Por lo que el for que has hecho está mal. El índice debe contar desde 0: Código
Si dejas el for así, te dará una excepción de tipo ArrayIndexOutOfBoundsException que literalmente significa que se ha querido acceder al array mediante un índice que está fuera de sus límites. Explicación; Cuando i vale = valor -> valor obtenido del array Código: i irá desde 1 a 9. Recorrerá 9 posiciones. Saludos. Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 16:34 pm Hola mcuhas gracias por responder, solo que me has dejado un poco mas confudido no se si podrias decirme como queda en concreto el codigo ?? de antemano gracias por tu atencion.
Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 16:58 pm Mete mano al código sin miedo a equivocarte, así es como se aprende.
Código
PD: Si tu duda fue despejada, por favor marca el tema como solucionado. Salu2. Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 17:35 pm Muchisimas gracias nuevamente en verdad me sirvio de mucho este programa me a traido dolores de cabeza no habia podido solucionarlo gracias, ya solo marca un error en la linea 16 espero poder solucionarlo gracias nuevamente.
Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 17:42 pm El código que te puse antes tenía un ligero error (cosas que pasan cuando codeas en un editor de texto xD). Prueba el código nuevamente, debe correr sin problema alguno.
Saludos y suerte con tu aprendizaje. Título: Re: Arreglo de java Publicado por: 1mpuls0 en 24 Marzo 2014, 17:44 pm En mi opinion no recomiendo que el chico utilice
Código Se nota que está aprendiendo y es mejor que utilice ciclos, bucles, loops o como gusten llamarle para que así vaya desarrollando más su lógica. Con solo ver su código se nota que no tiene idea de que está haciendo. Código ? ._. Eso no tiene mucho sentido, bueno no puedes generalizar, porque estás diciendo que si el tamaño del arreglo es mayor o igual a un número ingresado entonces si se encuentra en el arreglo. arreglo.length, lo que hace es retornar el tamaño del arreglo en este caso el tamaño sería 9. Qué pasa si yo ingreso el número 0?, segun tu condición si(9>=0) se encuentra en el arreglo y eso no es verdad. Lo que debes hacer es mediante un ciclo for, while, do-while (para este caso recomiendo un for) es recorrer todo el arreglo. y dentro de ese for ir comparando con tu dato ingresado Por cierto en Java y en muchos otros lenguajes los indices de los arreglos inician en 0. Esto no es correcto (para este caso) para otro tipo de problemas puedes inicializarlo de acuerdo a tus necesidades) Código
dato = lee_valor para(indice = 0, indice<tamano_arreglo, incrementa_indice) si dato = arreglo(indice) imprime "si se encuentra en el arreglo" rompre_ciclo Espero pueda servirte. Saludos. Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 17:51 pm Tienes toda la razón Darhius. Lo que intenté hacer en el código que puse, fue mantener todo lo más simple posible, pero es probable que el autor del tema se haya confundido (si es así, discúlpame). Como dice Darhius, puedes usar loops para reemplazar Arrays.asList(arreglo).indexOf(3). Salu2.
Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 18:04 pm Hola buenos dias, tienes toda la razon dariuh no entiendo mucho o nada de los arreglos quisiera me pudieras orientar tambien en el codigo ya que se me hace mas facil aprender de un codigo que de pseudocodigo.
mitsu no hay ningun problema me sirvio tu codigo para poner mas empeño en los codigos y saber donde es el detalle del problema. muchas gracias de antemando un cordial saludos a ambos Título: Re: Arreglo de java Publicado por: 1mpuls0 en 24 Marzo 2014, 18:05 pm Hola @Mitsu no te disculpes, al contrario se agradecen las buenas intenciones.
Tal vez en un futuro, pueda implementar como lo mencionas para ahorrar tiempos. Por cierto esto fue sin la intención de ofender. Con solo ver su código se nota que no tiene idea de que está haciendo. @ale95121 Lo que dejé fue un pseudocódigo o un intento de Código: dato = lee_valor //lees tu dato Intenta hacer el código, si te quedas en algo, comentalo aquí mismo, para eso estamos para ayudarnos a disipar las dudas. Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 18:39 pm hola Darhius mira asi es como me queda mi codigo:
import javax.swing.JOptionPane; public class InicArreglo{ public static void main (String args[]){ int arreglo[]={1,2,3,4,5,6,7,8,9,10}; for (int contador=0;contador<arreglo.length;contador++) int opc=Integer.parseInt(JOptionPane.showInputDialog("Dame un numero")); if(arreglo[contador]==opc){ System.out.printf("El numero se encuentra en el arreglo"); } else{ System.out.printf("EL numero no se encuentra en el arreglo"); } } Título: Re: Arreglo de java Publicado por: 1mpuls0 en 24 Marzo 2014, 18:52 pm Hola.
Vas bien... Solo que no puedes pedir el dato cada vez que incremente el contador. Código
Lo que hace esa instrucciones es mas o menos así. 1. inicia el contador en 0 2. compara si contador es menor que el tamaño del arreglo. 3. Si es menor entra al bloque. 4. Pide un numero y hace todo lo demás 5. incrementa el contador 6. contador es igual a 1. 2. compara si contador es menor que tamaño de arreglo ... 4. VUELVE a pedir otra vez un numero. .... * Lo que necesitamos es que pida solamente una vez el número, así que necesitas sacar tu petición del número del for. Cuando por fin encuentre el número hay que terminar el ciclo para que ya que no siga recorriendolo, hay varias formas. utilizando la palabra reservada break (muchos no la recomiendan pero es lo más usado xD), igualando el contador al tamaño del arreglo, y utilizando banderas booleanas, por ahora solo te recomiendo el break. Por cierto, aquí donde escrbibes el mensaje hay un combobox (select) que dice "GeSHi" busca una opción que dice "Java" y ahí colca el código (solo el código de java) Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 19:48 pm Código
Título: Re: Arreglo de java Publicado por: 1mpuls0 en 24 Marzo 2014, 19:51 pm Hola.
Como te comenté antes, solo el código colocalo en geshi. Creo que no estás prestando mucha atención a lo que he escrito, re-leelo. esta parte está incorrecta, contador<=10, vas a tener un nullpointerexception. el break lo tienes que hacer cuando hayas encontrado el numero. el break sirve para romper el ciclo. edito: correlo tu mismo para que veas lo que hace y analices entre lo que hace y lo que escribes en tu código. Saludos! Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 20:17 pm
Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 20:21 pm Disculpa en verdad le pongo demasiada atencion pero como podras ver mi logica es algo lenta disculpa creo que ya te entendi hasta el for mira (por favor tenme paciencia);
Código
Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 20:30 pm mitsu gracias por la informacion me ah quedado un poco mas claro para que es el for pero en la lista que pones de el arreglo ya lo habia querido hacer asi antes pero marca error en los corchetes a que se debera?
Citar [String[] array = new int[5]; arreglo[0] = "valor 1"; arreglo[1] = "valor 2"; arreglo[2] = "valor 3"; arreglo[3] = "valor 4"; arreglo[4] = "valor 5";] Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 20:32 pm Me equivoqué con el nombre del array nada más. Verifica nuevamente el código que puse.
Título: Re: Arreglo de java Publicado por: 1mpuls0 en 24 Marzo 2014, 20:43 pm Disculpa en verdad le pongo demasiada atencion pero como podras ver mi logica es algo lenta disculpa creo que ya te entendi hasta el for mira (por favor tenme paciencia); Código
Bravo! ves como si puedes, con un poco de ayuda. Solo falta algo... suponiendo que se recorre todo el arreglo Código
al entrar en esta parte Código
verifica esa parte :) y ya estuvo Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 21:07 pm pero en el break me da un error y el if tambien mira y el if entonces le tengo que poner arreglo[indice].length??;
Código
Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 21:14 pm Éste es tu error, estás colocando punto y coma luego del for. Si colocas un punto y coma seguido de un loop (menos do-while) significa que ese loop es un loop vacío y el compilador lo ignora.
Código
Por lo que if, en realidad no está dentro de ningún loop, y la variable 'indice' no existe, ya que solo existe dentro del loop. Solo puedes usar break cuando estás dentro de un loop. Título: Re: Arreglo de java Publicado por: ale95121 en 24 Marzo 2014, 22:12 pm ya me corre pero cuando le doy el 1 me dice en numero se encuentra en el arreglo 1
cuando le doy el 2 me dice el numero no se encuentra en el arreglo el numero se encuentra en la posicion 2, como le hago para que se deje de reptir el mensaje el numero de veces que yo le de el numero? por ejemplo si le doy el 5 me dice 5 veces que no se encuentra en el arreglo y despues me imprime que se encuentra en la posicion 5. como lo puedo solucionar? Título: Re: Arreglo de java Publicado por: Mitsu en 24 Marzo 2014, 22:31 pm Eso pasa porque todo lo haces dentro del loop. Acostúmbrate a usar banderas, ésto no es más que una variable (normalmente booleana) que actúa como un informante. Si ocurre un determinado caso, la bandera va a guardar un valor, por ejemplo true, ésto dentro del loop.
Luego, fuera del loop analizas la bandera, si es true haces algo, si no, haces otra cosa. Código
Título: Re: Arreglo de java Publicado por: ale95121 en 25 Marzo 2014, 14:29 pm Hola genial ya me funciona perfectamente Gracias a ambos espero poder contar con ustedes mas adelante, espero y mi profesora ahora no me ponga peros por no entenderle a el programa.
Nuevamente gracias Darhius, gracias Mitsu. |