Boa tarde, estou tento dificuldade para poder solucionar um problema em um algoritmo, onde eu preciso validar a entrada de valores com base ao valores que já estão armazenados, tipo, tenho 2 variáveis de armazenamento, do tipo string contendo “hyago, lucas, …”, e um array onde cada nome está armazenado em um índice (esse array e string contem os mesmo valores), porem eu preciso adicionar nomes recebidos do scanner e comparada com um desses 2 (array ou string), se o usuário digitou foi o nome que já está armazenado, ele ira salvar no arraylist mas se não for, não ira armazenar e ira mostrar uma mensagem.
Olá, posta o seu código para podermos te ajudar melhor.
No geral é só iterar o array e usar o método equals da classe String para comparar
ok, postando
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Arrays;
class sorteio_de_chaves {
public static void Exibirmenur(){
System.out.println("*********************************Menu*****************************************");
System.out.println("Escolha uma das opções abaixo, e em seguida digite o numero da opção sugerida.");
System.out.println("0 - Encerra programa.");
System.out.println("1 - Sorteio e exibição de chaves de luta.");
System.out.println("2 - Insira os resultado dos ganhadores das chaves.");
System.out.println("******************************************************************************");
}
public static void main(String[] args) throws IOException {
int num,numin, numax = 0, numind = 10, numcont;
String nome;
Scanner ler = new Scanner(System.in);
ArrayList<String> nomes = new ArrayList<>();
int numini = 0, menu1, c = 0;
int menu = 10;
String formatado = null, chave = null,comentario;
byte[] texto;
String leitura = null;
String url;
String [] equipes;
System.out.println("digite o caminho do arquivo á ser lido.");
url = ler.next();
// linha abaixo realizar o processo de localizar o arquivo digitado.
Path diretorio = Paths.get(url);
try {
texto = Files.readAllBytes(diretorio);
leitura = new String (texto);
} catch (IOException erro) {
}
// Linha abaixo pega todos os valores que estão entre , e armazena em
//um índice do array.
equipes = leitura.split(",");
// linha abaixo copia o array e colar no arraylist.
nomes.addAll(Arrays.asList(equipes));
// Linha abaixo começa a parte de interação com usuario.
while(numind!=0){
Exibirmenur();
numind = ler.nextInt();
switch(numind){
case 1:
num = nomes.size();
if (nomes.size()==1) {
System.err.println("O ganhador foi: " +nomes.get(num-1));
}else{
if (num%2==1) {
numin = (num - 1)/2;
int p = num - 2;
System.err.println(nomes.get(num -1));
for (int i = 0; i < p; i++) {
System.out.println(nomes.get(i) +" x "+ nomes.get(p--));
}
} else {
int p = num / 2;
int w = num - 1;
for (int i = 0; i < p; i++) {
System.out.println(nomes.get(i) +" x "+ nomes.get(w--));
}
}
}
break;
case 2:
int teste;
nomes.clear();
do {
c = c+1;
System.out.println("Digite o nome do ganhador");
nome = ler.next();
for (int i = 0; i > equipes.length; i++) {
if (nome.equals(equipes[i])) {
nomes.add(nome);
System.err.println("Tem mais ganhador? Se for sim digite 1, se não digite 0");
break;
} else {
System.out.println("Nao encontrado");
System.err.println("Tem mais ganhador? Se for sim digite 1, se não digite 0");
}
}
teste = ler.nextInt();
} while (teste!=0);
if(c >17){
chave ="Eliminatorias";
}else{
switch(c){
case 1:
chave = "Ganhador";
break;
case 2:
chave = "Final";
break;
case 3:
chave = "Semifinal_impar"+c;
break;
case 4:
chave = "Semifinal"+c;
break;
case 5:
chave = "Semifinal_impar"+c;
break;
case 6:
chave = "Semifinal_impar"+c;
break;
case 7:
chave = "Quarta_de_final_impar"+c;
break;
case 8:
chave = "Quarta_de_final"+c;
break;
case 9:
chave = "Quarta_de_final_impar"+c;
break;
case 10:
chave = "Quarta_de_final_impar"+c;
break;
case 11:
chave = "Quarta_de_final_impar"+c;
break;
case 12:
chave = "Quarta_de_final_impar"+c;
break;
case 13:
chave = "Quarta_de_final_impar"+c;
break;
case 14:
chave = "Quarta_de_final_impar"+c;
break;
case 15:
chave = "Oitava_de_final_impar"+c;
break;
case 16:
chave = "Oitava_de_final"+c;
break;
default:
}
}
System.err.println("Digite o diretorio da pasta, para salvar o arquivo.\n "
+ "Obsevação use o '\\' no final, caso não tenha colocado. ");
url = ler.next();
FileWriter arq = new FileWriter(url+chave+".txt");
PrintWriter gravarArq = new PrintWriter(arq);
for (int i = 0; i < nomes.size(); i++) {
gravarArq.printf(nomes.get(i)+"\r\n");
}
arq.close();
break;
default:
}
}
}
}
Não entendi muito bem o problema, mas dá uma olhada pra ver se esse código pode te ajudar:
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
List<String> lista = new ArrayList<>();
String[] nomes = {"hyago", "lucas"}; //Array contendo os nomes
System.out.print("Informe um nome: ");
String nome = scan.nextLine(); //Variável recebendo o nome informado pelo usuário
for (int i = 0; i < nomes.length; i++) { // For para iterar o array com os nomes
if (nome.toLowerCase().equals(nomes[i])) { //Verifico se o nome passado pelo usuário contém no array (toLowerCase é opcional)
lista.add(nome); //Adiciono no ArrayList caso contenha o nome no array
System.out.println("Nome adicionado! Tamanho da lista: " + lista.size());
} else if (i == (nomes.length - 1) && lista.isEmpty()) { //Se o for chegar ao final da lista e não adicionar nenhum nome a mensagem abaixo será exibida
System.out.println("O nome não foi adicionado!");
}
}
}