Seu código está bom, Yasmin. Contudo, há algumas melhorias que podem ser aplicadas para deixá-lo mais otimizado em termos de legibilidade e manutenção. No seu código atual, você fere um dos princípios mais importantes: o DRY (Don't Repeat Yourself), que significa "Não se repita". Isso é prejudicial do ponto de vista da manutenção, pois, ao invés de alterar algo em um único local, você precisaria modificar cada ocorrência duplicada — o que é custoso.
Isso acontece no seu código com as seguintes instruções:
System.out.println("Escreva os nomes de cada funcionário (Digite 0 para sair): ");
e
String nomeFunc = input.nextLine();
que se repetem nas linhas 12 e 13, e novamente nas linhas 17 e 18.
Para resolver isso, você pode utilizar uma estrutura do-while
, que sempre executa o bloco ao menos uma vez antes de fazer a verificação condicional.
Aqui estão duas formas que propus para tornar o seu código mais fácil de manter e, principalmente, mais legível:
Do While
package com.github.rickmvi.challenge18;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class AddElementList {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
List<String> listaNomes = new ArrayList<>();
do {
System.out.println("Escreva os nomes de cada funcionário (Digite 0 para sair): ");
String nome = input.nextLine();
if (nome.equals("0"))
break;
listaNomes.add(nome);
} while (true);
System.out.println("\nLista de Funcionarios");
listaNomes.forEach(nome -> System.out.println("- " + nome));
input.close();
}
}
While
package com.github.rickmvi.challenge18;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class AddElementList2 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
List<String> listaNomes = new ArrayList<>();
while (true) {
System.out.println("Escreva os nomes de cada funcionário (Digite 0 para sair): ");
String nomeFunc = input.nextLine();
if (nomeFunc.equals("0")) break;
listaNomes.add(nomeFunc);
}
System.out.println("\nLista de funcionários:");
listaNomes.forEach(nome -> System.out.println("- " + nome));
input.close();
}
}
Dessa forma, se o nome do funcionário for igual a "0", o loop é encerrado imediatamente, evitando a repetição desnecessária de código.