Java - Problema con parametrización

 
Vista:
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con parametrización

Publicado por jose (73 intervenciones) el 04/10/2018 09:27:13
Buenos días a todos,

Estoy realizando un programa que haga lo siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Introduce una Matrícula y pulsa [ENTER]:111mat
Introduce un DNI y pulsa [ENTER]::111dni
Introduce un Nombre y pulsa [ENTER]:111tit
El DNI 111dni con nombre 111tit se ha añadido correctamente.
 
El matricula 111mat con dni 111dni se ha añadido correctamente.
 
Introduce una Matrícula y pulsa [ENTER]:111mat
El vehiculo 111mat pertenece a la persona 111dni con nombre 111tit
 
Introduce una Matrícula y pulsa [ENTER]:222mat
Introduce un DNI y pulsa [ENTER]::111dni
La persona 111dni 111tit ya existe, no es necesario ingresar un nuevo nombre.
 
El matricula 222mat con dni 111dni se ha añadido correctamente.
 
 
Introduce una Matrícula y pulsa [ENTER]:

El tema es que necesito poner las variables globales String matriConsulta, dniConsulta, nomConsulta; dentro del método pedir datos.

Pero al hacer eso me dice que han de estar inicializado. Si lo inicializo, tengo deja de funcionar correctamente.

Dejo el código por si alguien me puede ayudar.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import java.util.Scanner;
 
public class parametrizacion {
 
    private static final int MAX = 10;
    int indexDni = 0;
    int indexMatricula = 0;
    String matriConsulta, dniConsulta, nomConsulta;
    boolean finnalitza = false;
    Scanner scanner = new Scanner(System.in);
 
    public static void main(String[] args) {
        parametrizacion programa  = new parametrizacion();
        programa.inicio();
    }
 
     private void inicio() {
        String[][] listaMatriDni = new String[MAX][2];
        String[][] listaDniNom = new String[MAX][2];
 
        mostrarPresentacion();
          while ((indexMatricula < MAX)&&(!finnalitza)) {
              pedirDatos(listaMatriDni, listaDniNom);
          }
          finPrograma();
     }
 
    private void mostrarPresentacion() {
        System.out.println("Programa de vehiculos\n");
        System.out.println("--------------------");
    }
 
    private void pedirDatos(String[][] listaMatriDni,String[][] listaDniNom ) {
 
        String matricula;
        String dni;
        String nom;
 
        System.out.print("\nIntroduce una Matrícula y pulsa [ENTER]:");
        matricula =scanner.nextLine();
        if (matricula.equalsIgnoreCase("fin")){
            finnalitza = true;
            return;
        }
 
        buscarDniByMatricula(matricula,listaMatriDni);
        buscarPersonaByDni(dniConsulta,listaDniNom);
        if (matriConsulta == matricula) {
            System.out.println("El vehiculo " + matricula + " pertenece a la persona " + dniConsulta +  " con nombre " + nomConsulta + " \n" );
            return;
        }
 
        System.out.print("Introduce un DNI y pulsa [ENTER]::");
        dni = scanner.nextLine();
        if (dni.equalsIgnoreCase("fin")){
            finnalitza = true;
            return;
        }
 
        buscarPersonaByDni(dni,listaDniNom);
        if (dniConsulta == dni) {
            System.out.println("La persona " + dni + " " + nomConsulta +  " ya existe, no es necesario ingresar un nuevo nombre. \n" );
            añadirVehiculo(listaMatriDni, matricula, dni);
        }else{
            System.out.print("Introduce un Nombre y pulsa [ENTER]:");
            nom = scanner.nextLine();
            if (nom.equalsIgnoreCase("fin")){
                finnalitza = true;
                return;
            }
            añadirPersona(listaDniNom,dni,nom);
            añadirVehiculo(listaMatriDni, matricula, dni);
        }
 
    }
    //Método para añadir dni y nombre en array listaDniNom
    private String añadirPersona(String[][]listaDniNom, String aDni, String aNom ) {
        listaDniNom[indexDni][0] = aDni;
        listaDniNom[indexDni][1] = aNom;
        indexDni ++;
        System.out.println("El DNI " + aDni + " con nombre " + aNom + " se ha añadido correctamente. \n" );
 
        return aDni;
    }
    //Método para añadir matricula y dni en array listaMatriDni
    private String añadirVehiculo(String[][] listaMatriDni,String bMatricula, String bDni) {
        listaMatriDni[indexMatricula][0] = bMatricula;
        listaMatriDni[indexMatricula][1] = bDni;
        indexMatricula++;
        System.out.println("El matricula " + bMatricula + " con dni " + bDni + " se ha añadido correctamente. \n" );
        return bMatricula;
    }
    //Método para buscar el dni a través de la matrícula
    private String buscarDniByMatricula(String pMatricula, String[][] listaMatriDni) {
        for(int i=0; (i<indexMatricula); i++){
            if (listaMatriDni[i][0].equalsIgnoreCase(pMatricula)) {
                matriConsulta = pMatricula;
                dniConsulta = listaMatriDni[i][1];
                return listaMatriDni[i][1]; //Que retorne el nombre
            }
        }
        return "";  // no se ha encontrado la matrícula
     }
     //Método para buscar el nombre a través del dni
     private String buscarPersonaByDni(String pDNI, String[][] listaDniNom) {
         for(int i=0; (i<indexDni); i++){
            if (listaDniNom[i][0].equalsIgnoreCase(pDNI)) {
                    dniConsulta = pDNI;
                    nomConsulta = listaDniNom[i][1];
                    return listaDniNom[i][1]; //Que retorne el nombre
            }
         }
         return "";  // no se ha encontrado el dni
     }
 
    private void finPrograma() {
        System.out.println("finalizar programa");
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Problema con parametrización

Publicado por Ruben (24 intervenciones) el 04/10/2018 16:25:43
Buenas,

No entiendo cual es tu problema, he copiado el código que pones directamente en mi eclipse y no me ha arrojado ningún error al introducir los datos.....

las variables matriConsulta están en los if dentro del método que comentas.

Es cierto que haces comparaciones con == entre string y eso es MALISIMO!!!! se deben de comparar string.equals(string2)

Si nos dices que error te da o el código erróneo te podemos ayudar

Salu2!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con parametrización

Publicado por jose (73 intervenciones) el 04/10/2018 17:07:10
Hola Ruben,

Soy un estudiante de ciclo formativo a distancia, por desgracia la formación es la peor que he visto y no consigo ayuda de nadie.

La pregunta era como podía sacar las variables globales String matriConsulta, dniConsulta, nomConsulta; y convertirlas en parametrizadas, algo como datosvehículos(int matriconsulta,dniConsulta, nomConsulta)

El ejercicio consiste en parametrizar un programa que antes tenía variables globales.

El ejercicio funciona bien. Pero no se si me pondrán pegas en esto.

he intentado hacer
1
if (matriConsulta.equals(matricula))
pero me dá un error Exception in thread "main" java.lang.NullPointerException
por lo que utilice en su lugar
1
if (Objects.equals(matriConsulta, matricula)) {
pero debía importar java.utils.Objects;, cosa que no si al profe le gusta.

Tengo muchas preguntas dado que estoy con otro ejercicio de parametrización, donde tengo que llamar a varios métodos con return y varios han de devolver un array creado en el propio método.

Realmente necesito a alguien que me guíe en que me enseñe los pasos.

Muchas gracias por contestar Ruben,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problema con parametrización

Publicado por ruben (1 intervención) el 05/10/2018 10:02:55
Buenas,

Te pongo un poco de información:

Las variables globales, engloban a toda la clase, y pueden ser privadas o publicas (publicas accesibles desde fuera de la clase y privadas solo accesible a través de los métodos get y set).

Las variables que son creadas dentro de un método son propias de ese método y mueren con él, de forma que no son accesibles desde otro método o clase.

Para ordenar tu código te recomiendo que en la clase principal solo tengas el método "main". El resto de funciones deberían de estar en diferentes clases (esto es la POO o Programación Orienteada a Objetos y encapsulada).

En cada clase puedes generar 1 o n objetos de esa clase, que tendrá como atributos las variables globales de la case.

Si quieres utilizar una variable global dentro de un método PUEDES, pero ten en cuenta que para poder usarla o realizar comparaciones de esta variable, antes debes de inicializarla con algún valor (por ejemplo los String miMatricula =""), si no las inicializas y intentas realizar una comparación con equals te lanza el error de NullPointer porque la variable está sin inicializar y entonces contiene null, de forma que estarías realizando una comparacion de null.equals("algo").

En cuanto al importar Object, no creo que le vaya a hacer gracia a tu profesor que utilices eso par comparaciones.....

Si quires te puedo ayudar o enseñarte algo de POO por correo, deja tu correo en el mensaje y te escribo.

Un saludo,

Rubén
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de jose
Val: 64
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con parametrización

Publicado por jose (73 intervenciones) el 01/11/2018 13:35:51
Hola Ruben,

Muchas gracias por la respuesta.

He tardado en contestar por que también hago otras asignaturas. Hasta que nos ponen ejercicios que nos puntúan pasa casi un mes.

Se agradece la ayuda ofrecida.

Yo intento buscar información por la web y si veo que no salgo del problema, es entonces cuando acudo a los foros. Cosa habitual.

Los programas cada vez son más complicados, pero la ayuda del profesor es nula, nos da Pdfs para leer y word con el enunciado de un programa por mes. Nos puntúa, y no resuelve dudas.

Lo único que quiero es quitarme la asignatura, me quedan dos programas y el exámen final de enero. A partir de ahí dudo que vaya a utilizar java para nada. Como muchas cosas las acabaré olvidando por no utilizarlas.

Saludos,
Jose Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar