Java - Problema con método y for

 
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 método y for

Publicado por jose (73 intervenciones) el 02/11/2018 21:15:31
Hola a todos,

Tengo un problemilla que ha de ser sencillo pero no encuentro la forma.

Tengo dos clases una principal y otra con varios métodos.

Uno de los métodos ha de buscar dentro de un array un valor y retornar a un menú.

Este es el código del método principal.

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
private void inici() {
    // Codi productes, Descripció , PVP
    String[][] productes = new String[MAX][3];
    //Codi producte,Descripció, PVP, Quantitat
    String[][] carroCompra = new String[MAX][4];
 
    boolean sortir = false;
    int opcio;
 
    mostrarPresentacio();
 
    while (!sortir) {
        System.out.println();
        System.out.println("1. Afegir producte al catàleg");
        System.out.println("2. Afegir producte al carro de la compra");
        System.out.println("3. Llista de productes");
        System.out.println("4. Mostrar productes del carro de la compra");
        System.out.println("5. Sortir");
        System.out.println("Escriu el número de l'opció:");
        opcio = scanner.nextInt();
 
        switch (opcio) {
        case 1:
            afegirProductes(productes);
            break;
        case 2:
            afegirAlCarro(productes, carroCompra);
            break;
        case 3:
            mostrarLlistaProductes(productes);
            break;
        case 4:
            mostrarCarroCompra(carroCompra);
            break;
        case 5:
            fiPrograma();
            sortir = true;
            break;
        default:
            System.out.println("Només números entre 1 i 5");
        }
    }
}
 
private void afegirProductes(String[][] productes) {
    // Es demanaran les dades Codi Producte, descripció i PVP,
    // es comprovarà si aquest producte ja existeix en l’array «productes»
    // i si no hi és, doncs s’afegirà en l’array, de la forma següent:
    // dades.afegirProducte(codiProducte, descripcio, pvp, productes);
    scanner = new Scanner(System.in);
    String codiProducto;
    String descripcion;
    String  PVP;
 
    System.out.print("\nIntrodueix el codi del producte: ");
    codiProducto = scanner.nextLine();
 
    //Comprobar que no existe el producto
    dades.cercaCodiProducte(codiProducto, productes);
 
 
    System.out.print("\nIntrodueix la descripció del producte: ");
    descripcion = scanner.nextLine();
 
 
    System.out.print("\nIntrodueix el PVP del producte (Sólament numeros enteros): ");
    PVP = scanner.nextLine();
 
 
    int PvpInt  = Integer.parseInt(PVP);
    dades.afegirProducte(codiProducto, descripcion, PvpInt, productes);
 
}

y esto es el método de la clase secundaria

1
2
3
4
5
6
7
8
9
10
public void cercaCodiProducte(String pCodiProducte, String[][] productes){
 
    for (int i = 0; (i < productes.length); i++) {
        if (pCodiProducte.equalsIgnoreCase(productes[i][0])) {
            System.out.print("Este código ya existe.");
            return;
        }
    }
 
}

Resulta que lo que necesito es que si encuentra el código vuelva al menu del método inici. En vez de eso si lo encuentra imprime ya existe pero me pregunta por la siguiente pregunta

Selection_022

pero necesito que vuelva a preguntar o bien por el código o bien el menu de la método inici. Algo como esto

Selection_023

Alguien sabría cómo modificar el método para que funcione.

Si el for lo colocó en la clase principal, como esto, funciona. Pero me gustaría crear un método en la clase secundaría si es posible.

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
private void afegirProductes(String[][] productes) {
    // Es demanaran les dades Codi Producte, descripció i PVP,
    // es comprovarà si aquest producte ja existeix en l’array «productes»
    // i si no hi és, doncs s’afegirà en l’array, de la forma següent:
    // dades.afegirProducte(codiProducte, descripcio, pvp, productes);
    scanner = new Scanner(System.in);
    String codiProducto;
    String descripcion;
    String  PVP;
 
    System.out.print("\nIntrodueix el codi del producte: ");
    codiProducto = scanner.nextLine();
 
    //Comprobar que no existe el producto
    //dades.cercaCodiProducte(codiProducto, productes);
    for (int i = 0; (i < productes.length); i++) {
        if (codiProducto.equals(productes[i][0])) {
            System.out.print("Este código ya existe");
            return;
        }
    }
 
    System.out.print("\nIntrodueix la descripció del producte: ");
    descripcion = scanner.nextLine();
 
 
    System.out.print("\nIntrodueix el PVP del producte (Sólament numeros enteros): ");
    PVP = scanner.nextLine();
 
 
    int PvpInt  = Integer.parseInt(PVP);
    dades.afegirProducte(codiProducto, descripcion, PvpInt, productes);
 
}

Espero haberme podido explicar bien, ni yo me entero de lo que he escrito. Jajaja

Saludos a todos,
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
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Problema con método y for

Publicado por Kabuto (1385 intervenciones) el 02/11/2018 21:33:02
Creo que lo que necesitas es convertir ese método en boolean:

1
2
3
4
5
6
7
8
9
10
11
12
public boolean cercaCodiProducte(String pCodiProducte, String[][] productes){
 
	for (int i = 0; (i < productes.length); i++) {
        if (pCodiProducte.equalsIgnoreCase(productes[i][0])) {
            System.out.print("Este código ya existe.");
            return true;
        }
    }
    //Si el for no ha retornado true, es que no existe el codigo, asi que retornamos false
    return false;
 
}


Y ya luego al llamarlo, solo sigues pidiendo datos si el metodo te retorna false, sino, no haces nada y volverá al menú principal:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
System.out.print("\nIntrodueix el codi del producte: ");
codiProducto = scanner.nextLine();
 
//Comprobar que no existe el producto, si existe, no haremos nada
if (dades.cercaCodiProducte(codiProducto, productes) == false) {
 
    System.out.print("\nIntrodueix la descripció del producte: ");
        descripcion = scanner.nextLine();
 
    System.out.print("\nIntrodueix el PVP del producte (Sólament numeros enteros): ");
    PVP = scanner.nextLine();
 
    int PvpInt  = Integer.parseInt(PVP);
    dades.afegirProducte(codiProducto, descripcion, PvpInt, productes);
}
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