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

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


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

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Arreglo de objetos
« en: 16 Marzo 2014, 06:29 am »

Hola que tal estoy haciendo un programa donde tengo que realizar una busqueda en dos arreglos diferentes de objetos pero me esta marcando error no se si tengan alguna sugerencia
Aqui el codigo
Código
  1. [code=java]
  2. System.out.println("Ingrese nombre del cliente a buscar");
  3. temp=Leer.nextLine();
  4. temp=Leer.nextLine();
  5. for(i=0;i<n||i<a;i++)
  6. {
  7.  
  8. if(x[i].nombre.equals(temp)){
  9. e=1;
  10. }
  11. else if(y[i].nombre.equals(temp))
  12. {
  13. u=1;
  14. }
  15. if(e==1){System.out.println("Eliminado! ");
  16.                             n--;}
  17.                         else if(u==1)
  18. {
  19. System.out.println("Eliminado! ");
  20. a--;
  21. }
  22.  
[/code]
no me quiere entrar a ninguno de los else if solo me busca en el objeto "x"


« Última modificación: 16 Marzo 2014, 19:33 pm por Aida » En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Arreglo de objetos
« Respuesta #1 en: 16 Marzo 2014, 06:53 am »

no puedo responder a tu pregunta, pero te digo que, por favor para el código usa las etiquetas GeSHi en el editor de texto (a la derecha) para que sea más legible e indica cual error tienes exactamente (copy&paste del compilador) porque sin ello causa más trabajo buscarlo y ayudarte


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de objetos
« Respuesta #2 en: 16 Marzo 2014, 13:10 pm »

Dicho ya lo de engelx, etiqueta tu codigo entre los tags codigo: code==java y /code (ambos encerrados entre []).

Ahora, si vas a evaluar dos valores para que usas else if? tendrias que usar dos if, ya que se pueden cumplir ambos y no necesariamente uno.

Los if para eliminar las coincidencias deben estar fuera del loop, es decir, fuera del for ya que, no tienen ninguna dependencia del for, simplemente de e y u.

Otra cosa, si vas a estudiar java estudia sobre POO. Sabras que el encapsulamiento es pilar en la construccion de aplicaciones, por lo que la forma:

Código
  1. Objeto miObjecto = new Objecto();
  2. miObjecto.propiedad = valor;

No es recomendable ya que, en un futuro cuando tengas un proyecto de muchas clases facilmente puedes cambiar el valor de las propiedades por error, y estar siempre propenso a ello. Por eso, la forma de acceder a las propiedades debe ser por medio de getters y setters (Leer al respecto).

Código
  1. Objecto x = new Objecto();
  2. String nombre1 = leer.nextLine();
  3. String nombre2 = leer.nextLine();
  4.  
  5. for(byte i=0; i<n || i<a; i++) {
  6.    if(x.getNombre().equals(nombre1)) e=1;
  7.    if(x.getNombre().equals(nombre2)) u=1;
  8. }
  9.  
  10. if(e==1) System.out.println("Usuario elimimado.");
  11. if(u==1) System.out.println("Usuario eliminado.");
« Última modificación: 16 Marzo 2014, 13:13 pm por Mitsu » En línea

kasiko

Desconectado Desconectado

Mensajes: 218



Ver Perfil
Re: Arreglo de objetos
« Respuesta #3 en: 16 Marzo 2014, 17:46 pm »

no entiendo para nada la pregunta  :rolleyes:
En línea

Nos vemos...

Aida

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Arreglo de objetos
« Respuesta #4 en: 16 Marzo 2014, 19:47 pm »

Di a notar que soy demasiado nueva en esto, disculpen por lo del código
y en realidad si estoy estudiando poo, pero apenas ando en inicios es de mis primeros programas. Aun sigue sin resolverse esto de antemano gracias.
Código
  1. import java.util.Scanner;
  2. public class Sistema {
  3. static Scanner Leer=new Scanner(System.in);
  4. public static void main(String[]arg)
  5. {
  6. int op, o,p;
  7. int a=0, n=0,i;
  8. int e=0;
  9. int u=0;
  10. String temp;
  11. Contado[] x=new Contado[5];
  12. Credito[] y=new Credito[5];
  13. for (i=0;i<5;i++)
  14. {
  15. x[i]=new Contado();
  16. y[i]=new Credito();
  17. }
  18.  
  19.  
  20. do{
  21. System.out.println("Menu");
  22. System.out.println("1.Ventas de Contado");
  23. System.out.println("2.Ventas a Credito");
  24. System.out.println("3.Modificar");
  25. System.out.println("4.Eliminar");
  26. System.out.println("5.Salir");
  27. op=Leer.nextInt();
  28. switch(op)
  29. {
  30. case 1:
  31. do{
  32. System.out.println("MENU");
  33. System.out.println("1.Agregar Venta");
  34. System.out.println("2.Mostrar Ventas");
  35. System.out.println("3.Regresar");
  36. o=Leer.nextInt();
  37. switch(o)
  38. {
  39. case 1:
  40. if(n<5)
  41. {
  42. x[n].Capturar();
  43. n++;
  44. }
  45. else
  46. {
  47. System.out.println("Memoria llena");
  48. }
  49. break;
  50. case 2:
  51. if(n>0){
  52. for(i=0;i<n; i++)
  53. {
  54. x[i].Mostrar();
  55. }
  56. }
  57. else{
  58. System.out.println("No hay datos");
  59. }
  60.  
  61. break;
  62. case 3:
  63. break;
  64. }
  65. }while(o!=3);
  66. break;
  67. case 2:
  68. do{
  69.  
  70. System.out.println("MENU");
  71. System.out.println("1.Agregar Venta");
  72. System.out.println("2.Mostrar Ventas");
  73. System.out.println("3.Regresar");
  74. p=Leer.nextInt();
  75. switch(p)
  76. {
  77. case 1:
  78. if(a<5)
  79. {
  80. y[a].Capturar();
  81. a++;
  82. }
  83. else
  84. {
  85. System.out.println("Memoria llena");
  86. }
  87. break;
  88. case 2:
  89. if(a>0){
  90. for(i=0;i<a;i++)
  91. {
  92. y[i].Mostrar();
  93.  
  94. }
  95. }
  96. else{
  97. System.out.println("No hay datos");
  98. }
  99.  
  100. break;
  101. }
  102. }while(p!=3);
  103. break;
  104. case 3:
  105. System.out.println("Ingrese nombre del cliente a buscar");
  106. temp=Leer.nextLine();
  107. temp=Leer.nextLine();
  108. for(i=0;i<n||i<a;i++)
  109. {
  110.  
  111. if(x[i].nombre.equals(temp))
  112. {e=1;  
  113.  
  114. }
  115. if(y[i].nombre.equals(temp)){u=1;
  116.  
  117. }
  118. }
  119.  
  120. if(e==1){
  121.             System.out.println("Existe! ");
  122.             x[i].Modificar();
  123.            }
  124. if(u==1)
  125. {
  126. System.out.println("Existe! ");
  127. y[i].Modificar();
  128. }
  129.  
  130.  
  131. else{
  132.  
  133. System.out.println("No tengo ese dato");
  134. }
  135.  
  136.  
  137. break;
  138.  
  139. case 4:
  140. System.out.println("Ingrese nombre del cliente a buscar");
  141. temp=Leer.nextLine();
  142. temp=Leer.nextLine();
  143. for(i=0;i<n||i<a;i++)
  144. {
  145.  
  146. if(x[i].nombre.equals(temp)) e=1;
  147.  
  148.  
  149.       if(y[i].nombre.equals(temp))u=1;
  150.  
  151. }
  152.  
  153. if(e==1)
  154.             System.out.println("Eliminado! ");
  155.            n--;
  156. if(u==1)
  157. System.out.println("Eliminado! ");
  158. a--;
  159.  
  160.  
  161. /*else{
  162.  
  163. System.out.println("No tengo ese dato");
  164. }*/
  165. }
  166.  
  167.  
  168.  
  169.  
  170. }while(op!=5);
  171.  
  172. }
  173. }
  174.  
El programa me crashea a la hora de entrar en el caso 3 o 4 con el error java.lang.NulPointerExceptionl
En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de objetos
« Respuesta #5 en: 16 Marzo 2014, 21:14 pm »

Hola, una excepción NullPointerException se lanza cuando se está intentado acceder a una variable/objeto que no ha sido inicializado, es decir, que su valor es null.

No dices en qué línea te marca la excepción, pero quizás la excepción se lanza cuando intentas comparar lo ingresado con la propiedad de tu clase, cuya propiedad quizás aún no está inicializada. Recuerda que, un objeto, es único y tiene una copia individual de cada propiedad.

Al hacer tú lo siguiente:

Código
  1. Contado[] x = new Contado[5];
  2. Credito[] y = new Credito[5];
  3.  
  4. for(byte i=0; i<5; i++) {
  5.       x[i] = new Contado();
  6.       y[i] = new Contado();
  7. }
  8.  

Supongo que Contado y Crédito tienen ya propiedades pre-establecidas, para que puedas comparar lo ingresado (temp = leer.nextLine()) con las propiedades de los objetos.

Ej:

Código
  1. public class Contado {
  2.  
  3.   public String nombre = "Chimpandolfo"; // MAL! Nunca una propiedad debe ser pública. (Encapsulamiento)
  4.   // demás propiedades y métodos..
  5.  
  6. }

Si no es así, es por ello que te lanza el NullPointerException, porque estarías comparando un String con un null, ya que String es una clase y nombre vendría a ser un objeto String y, al no inicializarlo, como todo objeto sin inicializar, por defecto tendrá el valor null.

Saludos.
En línea

Aida

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Arreglo de objetos
« Respuesta #6 en: 16 Marzo 2014, 22:33 pm »

El error esta en la linea 115, lo hice por separado, es decir solo accediendo a la propiedad nombre de uno de los objetos y todo bien, el problema viene cuando intento comparar esa propiedad en los dos objetos .

el Error lo marca aqui:
Código
  1. for(i=0;i<n||i<a;i++)
  2. {
  3.  
  4. if(x[i].nombre.equals(temp))
  5. {e=1;  
  6.  
  7. }
  8. if(y[i].nombre.equals(temp)){
  9. u=1;
  10.  
  11. }
« Última modificación: 16 Marzo 2014, 22:35 pm por Aida » En línea

Mitsu

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Arreglo de objetos
« Respuesta #7 en: 16 Marzo 2014, 23:45 pm »

La verdad no puedo ver bien tu código ya que estoy en el móvil. Pero ya que el error te lo marca allí, haz lo siguiente.

Dentro del for, en la primera línea imprime el valor de temp y el nombre del objeto actual:

Código
  1. System.out.println("temp vale:\t" + temp + "Nombre:\t" + x[i].nombre);
  2.  

Comenta los if para solo visualizar el contenido de temp y de los nombres. Si gustas agrégame al skype que estoy conectado allí: mitsu.g

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Arreglo Dinamico con Objetos :S
Java
Xephiro 9 14,481 Último mensaje 6 Marzo 2009, 20:20 pm
por juancho77
arreglo de objetos sin variables globales
Java
gibi77 4 4,668 Último mensaje 12 Octubre 2011, 10:45 am
por Debci
Crear un arreglo de objetos con el constructor
Programación C/C++
ThronerAXE 1 1,916 Último mensaje 16 Febrero 2014, 18:38 pm
por eferion
segmentation al ordenar un arreglo de objetos
Programación C/C++
yeah_2796 0 1,766 Último mensaje 19 Mayo 2015, 22:51 pm
por yeah_2796
Como puedo serializar un arreglo de objetos en java
Java
Soul_Eater 4 4,273 Último mensaje 9 Mayo 2017, 02:58 am
por Soul_Eater
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines