I'm doing a simple program that inserts in the first possible position of a vector, a String
.
Here is the code I have:
import java.util.Formatter;
import java.util.Scanner;
/**
*
* @author AmândioMagalhães(115
*/
public class PL7_ex6 {
private static Scanner input = new Scanner(System.in);
private static Formatter output = new Formatter(System.out);
public static void main(String[] args) {
String[] visitantes = new String[100];
int nElm = 0;
menu(visitantes, nElm);
}
private static void menu(String[] vec, int nElm) {
int op;
output.format("bem-vindo!");
output.format("\n\nAqui pode:");
do {
System.out.println("\n\n1 - Inserir um visitante"
+ "\n2 - Listar todos os visitantes"
+ "\n3 - Atualizar um nome dado"
+ "\n4 - Eliminar um visitante dado"
+ "\n5- Lisstar os nomes começados por uma dada letra"
+ "\n6 - Listar nomes repetidos"
+ "\n0 - para terminar o programa");
op = input.nextInt();
if (op < 0 || op > 6) {
output.format("%sTem de introduzir uma opção válida!");
}
if (op == 0) {
//termina
} else {
switch (op) {
case 0:
case 1:
inserirVisitante(vec, nElm);
System.out.println(vec[0]);
break;
case 2:
listarVisitantes(vec, nElm);
break;
case 3:
break;
default:
throw new AssertionError();
}
}
} while (op > 0 || op > 6);
}
private static void inserirVisitante(String[] vec, int nElm) {
int pos = 0;
int i = 0;
if (nElm == vec.length) {
output.format("Não há espaço disponível :(");
} else {
do {
if (i == nElm - 1) {
pos = i;
}
i++;
} while (i >= nElm - 1);
System.out.println("Introduza o nome do visitante");
input.nextLine();
vec[pos] = input.nextLine();
vec[pos].trim();
nElm = nElm + 1;
//para testar
System.out.println("\n" + nElm + "\n");
}
}
//nElem não passa de inserirVisitantes para este método
private static void listarVisitantes(String[] vec, int nElm) {
if (nElm == 0) {
//para testar
System.out.println("\n" + nElm + "\n");
output.format("Não há visitantes.");
} else {
for (int i = 0; i < nElm; i++) {
output.format("%n%d", vec[i]);
}
}
}
}
The problem here is that the variable nElm
resets to 0 without me setting it to 0