[ Foro de Java ]
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.)