elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Arreglo de java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Arreglo de java  (Leído 11,167 veces)
ale95121

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Arreglo de java
« 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");
}
}
}


En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de java
« Respuesta #1 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
  1. Integer[] numeros = {3,25,9,74,0,46,88,64};
  2. int i = Arrays.asList(numeros).indexOf(3); // convierte el array a lista y obtiene el indice del objeto pasado por parametro
  3.  

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
  1. for (int contador=0;contador<arreglo.length;contador++)
  2. System.out.printf("%5d%8d\n", contador, arreglo[contador]);
  3. }

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.

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 Desconectado

Mensajes: 11


Ver Perfil
Re: Arreglo de java
« Respuesta #2 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.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de java
« Respuesta #3 en: 24 Marzo 2014, 16:58 pm »

Mete mano al código sin miedo a equivocarte, así es como se aprende.

Código
  1. public class ArrayTest {
  2.  
  3. private Integer[] arreglo = {1,2,3,4,5,6,7,8,9,10};
  4.  
  5. public static void main(String[] args) {
  6. // TODO Auto-generated method stub
  7. ArrayTest test = new ArrayTest();
  8. int opc = Integer.parseInt(JOptionPane.showInputDialog("Ingresa el numero a buscar"));
  9. int posicion = test.obtenerIndexPorValor(opc);
  10. if(posicion != -1)
  11. System.out.println("Numero encontrado en la posicion:\t"+posicion);
  12. else System.out.println("Numero no encontrado.");
  13. }
  14.  
  15. public int obtenerIndexPorValor(int valor) {
  16. int posicion = Arrays.asList(arreglo).indexOf(valor);
  17.  
  18. return posicion;
  19. }
  20.  
  21. }

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 Desconectado

Mensajes: 11


Ver Perfil
Re: Arreglo de java
« Respuesta #4 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.
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de java
« Respuesta #5 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.
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Arreglo de java
« Respuesta #6 en: 24 Marzo 2014, 17:44 pm »

En mi opinion no recomiendo que el chico utilice
Código
  1. 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.

Código
  1. if(arreglo.length>=opc){
  2. System.out.printf("El numero: "+opc+" se encuentra en el arreglo ");
  3.  
? ._.

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
  1. 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

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de java
« Respuesta #7 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.
En línea

ale95121

Desconectado Desconectado

Mensajes: 11


Ver Perfil
Re: Arreglo de java
« Respuesta #8 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
En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Arreglo de java
« Respuesta #9 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 
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
Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

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,148 Último mensaje 30 Marzo 2011, 17:10 pm
por rub'n
Recorrer un Arreglo en Java (Buscar String)
Java
NatzMorel 1 4,416 Último mensaje 14 Junio 2012, 11:31 am
por ollo
[Ayuda] Arreglo y registro java
Java
axiotm 2 6,672 Último mensaje 27 Agosto 2013, 12:25 pm
por Zoik
seleccionar un numero dentro de un arreglo en java
Java
daniloops 4 5,429 Último mensaje 1 Julio 2014, 05:15 am
por daniloops
Como eliminar la casilla de un arreglo en java?
Java
fst091 3 3,538 Último mensaje 1 Abril 2016, 23:53 pm
por LaiaxanIV
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines