[ Foro de Java ]

Buscar un valor String en un array dinámico(File, Stream, Buffer)

29-Mar-2020 23:19
Invitado (Yourdead_Java)
0 Respuestas

Mi pequeño proyecto, consiste en hacer un array dinámico añadiendo nuevos valores gracias a un do while y un switch. Mi problema es el caso 3, que al querer ver un solo dato introducido por el usuario, no imprime el dato existente o omite por completo el if:

package savearray;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Scanner;

public class SaveArray {

   public static int op, xWhile, nArray, array[], acumulador;
   public static String strArray, strVerN, newStringArray[];

   public static void main(String[] args) {
       Scanner in = new Scanner(System.in);

       do {
           System.out.println("-----------------------------");
           System.out.println("1: Añadir números | 2: Leer números | 3: Ver número existente");
           System.out.println("-----------------------------");
           op = in.nextInt();
           switch (op) {
               //Añadir números
               case 1:
                   xWhile = 1;
                   acumulador++;
                   System.out.println("Cantidad del arreglo");
                   nArray = in.nextInt();
                   array = new int[nArray];
                   try {
                       for (int i = 0; i < nArray; i++) {
                           System.out.println("Ingrese el número deseado");
                           array[i] = in.nextInt();
                       }
                       //Acumulador para cuando se haga la operación más de 1 vez, el array no será valor nulo al principio,
                       //y cuando se ejecute por segunda vez o más, no sea sobre-escrito el strArray y actué como una base de datos,
                       //guardando valores hasta que el programa termine
                       if (acumulador == 1) {
                           strArray = "";
                       }
                       for (int i : array) {
                           strArray += "[" + i + "]";
                       }
                       //Guardar array
                       FileOutputStream saveFile = new FileOutputStream("DB.txt");
                       OutputStreamWriter outWrite = new OutputStreamWriter(saveFile);
                       outWrite.write(strArray);
                       outWrite.flush();
                       outWrite.close();
                       saveFile.close();
                       System.out.println("Archivo guardado.");
                   } catch (IOException e) {
                   }
                   break;
                   
               //Leer números
               case 2:
                   xWhile = 1;
                   try {
                       //Abrir array
                       FileInputStream saveFile = new FileInputStream("DB.txt");
                       InputStreamReader inReader = new InputStreamReader(saveFile);
                       BufferedReader buffRead = new BufferedReader(inReader);
                       String strArray = buffRead.readLine();
                       buffRead.close();
                       inReader.close();
                       saveFile.close();

                       //Imprimir
                       newStringArray = strArray.split(",");
                       for (String i : newStringArray) {
                           System.out.println(i);
                       }
                   } catch (IOException e) {
                   }
                   break;
                   
               //Ver número existente    
               case 3:
                   xWhile = 1;
                   in.skip("\n");
                   System.out.println("Ingrese el número:");
                   strVerN = in.nextLine();
                   for (String newStringArray1 : newStringArray) {
                       if (strVerN.equals(newStringArray1)) {
                           System.out.print("[" + newStringArray1 + "]");
                       } else {
                           System.out.println("Número no encontrado, vuelva a encontrar un número existente.");
                       }
                   }
                   break;

               default:
                   xWhile = 0;
                   break;
           }
       } while (xWhile == 1);
   }
}




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)