Io e il mio amico abbiamo creato questo programma, in cui scegliamo quanti nomi inserire, gli inseriamo, vengono aggiunti nell'arraylist, dopo aver inserito l'ultimo nome viene generato un nome casuale e viene richiesto se far generare un altro nome e cosi via, se digitiamo n il programma finisce e stampa la lista dei nomi inseriti
Quello che non riusciamo a fare almeno per il momento, è che quando viene richiesto di far generare un altro nome, vorremmo che generasse sempre un nome diverso e mai lo stesso, cioè lo stesso nome non deve essere generato 2 volte in modo consecutivo
Es. se scelgo di inserire 3 nomi
1° ciao
2° come
3° va
stampa come,
scelgo di far generare un altro nome ciao
scelgo di far generare un altro nome va
scelgo di far generare un altro nome ciao
e cosi via
Questo è il codice
import java.util.*;
public class NomiArrayList {
static Scanner sca = new Scanner(System.in);
Random ran = new Random();
ArrayList<String> nomi = new ArrayList<>();
public String nome;
int numero = 0;
boolean controllo;
//scegliere quanti nomi inserire
public void sceltaNumeri() {
int n = 0;
System.out.println("********");
System.out.println("* Nomi *");
System.out.println("********");
System.out.println("Digita Fine per terminare il programma");
do {
n = 0;
System.out.println("Quanti nomi vuoi inserire?");
String nume = sca.next();
try{
n = Integer.parseInt(nume);
}
catch(NumberFormatException e){
}
//controllo sullo 0 per l'ArrayList
if (n > 0) {
}
else if (n < 0){
System.out.println("Inserisci un numero maggiore di 0");
}
else
System.out.println("Inserisci un numero");
//variabile che assume valore di n al fuori del do-while
numero = n;
}
while(n < 0 || n == 0);
}
//metodo per l'inserimento del nome
public void inserisciNome() {
sceltaNumeri();
int inc = 1;
for (int p=0; p<numero; p++) {
do {
inc--;
controllo = false;
if (inc < 0) {
inc = 0;
//t ='0';
}
}
System.out.println("Inserisci il " + (p + 1) + "°" + " Nome");
nome = sca.next();
nomi.add(nome);
for (int i=0; i<nome.length(); i++) {
if (!(nome.charAt(i) == '0') && !(inc == 0)) {
}
else if ((nome.charAt(i) == '0' || nome.charAt(i) == '1' || nome.charAt(i) == '2' || nome.charAt(i) == '3' ||
nome.charAt(i) == '4' || nome.charAt(i) == '5' || nome.charAt(i) == '6' || nome.charAt(i) == '7' ||
nome.charAt(i) == '8' || nome.charAt(i) == '9') && inc == 0) {
System.out.println("ERRORE! C'è un numero nel nome");
controllo = true;
inc++;
}
}
if (!nome.matches("[-0-9]+")) {
}
else
System.out.println("ERRORE! Inserisci un altro nome senza numeri");
try {
for (String numero : nomi) {
if (numero.matches("[-0-9]+")) {
nomi.remove(numero);
}
for (int m=0; m<nome.length(); m++) {
if (nome.charAt(m) == '0' || nome.charAt(m) == '1' || nome.charAt(m) == '2' || nome.charAt(m) == '3' ||
nome.charAt(m) == '4' || nome.charAt(m) == '5' || nome.charAt(m) == '6' || nome.charAt(m) == '7' ||
nome.charAt(m) == '8' || nome.charAt(m) == '9') {
nomi.remove(nome);
}
}
}
}
catch (ConcurrentModificationException r) {
}
}
while(nome.matches("[-0-9]+") || controllo == true);
if (nome.equalsIgnoreCase("fine")) {
System.out.println("FINE");
break;
}
}
stampaNomeCasuale();
}
//metodo per la stampa dei nomi in modo casuale che inseriamo
public void stampaNomeCasuale() {
int rand=0;
boolean check = true;
String d;
try {
if (nome.equalsIgnoreCase("fine")) {
rand = ran.nextInt(nomi.size() - 1);
//check = true;
}
else {
rand = ran.nextInt(nomi.size());
check = false;
}
System.out.println();
System.out.println("Il Nome casuale è " + nomi.get(rand));
//System.out.println(rand);
}
catch(IllegalArgumentException e) {
System.out.println("La lista dei Nomi è VUOTA!");
}
if (check == true) {
}
else
richiedi();
}
//metodo per generare un altro nome
public void richiedi() {
String scelta;
do {
System.out.println();
System.out.print("Vuoi far generare un altro nome? (Y/N): ");
scelta = sca.next();
if (scelta.equalsIgnoreCase("Y"))
stampaNomeCasuale();
else if (scelta.equalsIgnoreCase("N")) {
System.out.println("FINE");
System.out.println();
System.out.println("Lista dei nomi");
for (int i=0; i<nomi.size(); i++) {
System.out.println("Il " + (i + 1) + "° " + nomi.get(i));
}
break;
}
else
System.out.println("Comando errato!");
}
while (!scelta.equalsIgnoreCase("Y"));
}
public static void main(String[] args) {
// TODO Auto-generated method stub
NomiArrayList no = new NomiArrayList();
no.inserisciNome();
}
}
Qualcuno può aiutarmi o darmi qualche consiglio?