Autor
|
Tema: Arreglo de java (Leído 11,095 veces)
|
ale95121
Desconectado
Mensajes: 11
|
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"); } } }
|
|
|
En línea
|
|
|
|
Mitsu
|
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. Integer[] numeros = {3, 25, 9, 74, 0, 46, 88, 64}; int i = Arrays. asList(numeros ). indexOf(3); // convierte el array a lista y obtiene el indice del objeto pasado por parametro
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: for (int contador=0;contador<arreglo.length;contador++) System. out. printf("%5d%8d\n", contador, arreglo [contador ]); }
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 i irá desde 1 a 9. Recorrerá 9 posiciones.
numeros[0] -> 1 i = 1 -> 2 i = 2 -> 3 i = 3 -> 4 i = 4 -> 5 i = 5 -> 6 i = 7 -> 8 i = 8 -> 9 i = 9 -> ? -> ArrayIndexOutOfBoundsException Saludos.
|
|
« Última modificación: 24 Marzo 2014, 16:12 pm por Mitsu »
|
En línea
|
|
|
|
ale95121
Desconectado
Mensajes: 11
|
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.
|
|
|
En línea
|
|
|
|
Mitsu
|
Mete mano al código sin miedo a equivocarte, así es como se aprende. public class ArrayTest { private Integer[] arreglo = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; public static void main (String[] args ) { // TODO Auto-generated method stub ArrayTest test = new ArrayTest(); int posicion = test.obtenerIndexPorValor(opc); if(posicion != -1) System. out. println("Numero encontrado en la posicion:\t"+posicion ); else System. out. println("Numero no encontrado."); } public int obtenerIndexPorValor(int valor) { int posicion = Arrays. asList(arreglo ). indexOf(valor ); return posicion; } }
PD: Si tu duda fue despejada, por favor marca el tema como solucionado. Salu2.
|
|
« Última modificación: 24 Marzo 2014, 17:19 pm por Mitsu »
|
En línea
|
|
|
|
ale95121
Desconectado
Mensajes: 11
|
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.
|
|
|
En línea
|
|
|
|
Mitsu
|
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.
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
En mi opinion no recomiendo que el chico utilice Arrays. asList(numeros ). indexOf(3)
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. if(arreglo.length>=opc){ System. out. printf("El numero: "+opc +" se encuentra en el arreglo ");
? ._. 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) for (int contador=1
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.
|
|
|
En línea
|
abc
|
|
|
Mitsu
|
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.
|
|
|
En línea
|
|
|
|
ale95121
Desconectado
Mensajes: 11
|
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
|
|
|
En línea
|
|
|
|
1mpuls0
Desconectado
Mensajes: 1.186
|
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 dato = lee_valor //lees tu dato para(indice = 0, indice<tamano_arreglo, incrementa_indice) //realizas el ciclo para ir recorriendo el arreglo si dato == arreglo(indice) //realizas comparación imprime "si se encuentra en el arreglo" //si son iguales muestras el mensaje. rompre_ciclo //si son iguales, además rompes el ciclo para que ya no continue recorriendo el arreglo.
Intenta hacer el código, si te quedas en algo, comentalo aquí mismo, para eso estamos para ayudarnos a disipar las dudas.
|
|
« Última modificación: 3 Septiembre 2015, 18:23 pm por 1mpuls0 »
|
En línea
|
abc
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Como agregar un arreglo de tipo persona en un Archivo en java.
Java
|
rub'n
|
7
|
8,121
|
30 Marzo 2011, 17:10 pm
por rub'n
|
|
|
Recorrer un Arreglo en Java (Buscar String)
Java
|
NatzMorel
|
1
|
4,395
|
14 Junio 2012, 11:31 am
por ollo
|
|
|
[Ayuda] Arreglo y registro java
Java
|
axiotm
|
2
|
6,657
|
27 Agosto 2013, 12:25 pm
por Zoik
|
|
|
seleccionar un numero dentro de un arreglo en java
Java
|
daniloops
|
4
|
5,404
|
1 Julio 2014, 05:15 am
por daniloops
|
|
|
Como eliminar la casilla de un arreglo en java?
Java
|
fst091
|
3
|
3,512
|
1 Abril 2016, 23:53 pm
por LaiaxanIV
|
|