Sto provando a utilizzare un ciclo do while per scoprire se l'utente desidera controllare un cane o un gatto in un sistema di allevamento in Java. L'idea è che entrano "cane" o "gatto" quando richiesto, e una qualsiasi delle voci causerà un errore e verrà richiesto nuovamente di inserire il nome del file.Do while loop che soddisfa una delle due condizioni
Se è stato inserito "cat" o "dog", il file equivalente verrà assegnato al programma (dogs.txt o cats.txt), quindi il sistema eseguirà e caricherà tali dati nel programma.
Qui ci sono le variabili correnti:
private String filename; // holds the name of the file
private Kennel kennel; // holds the kennel
private Scanner scan; // so we can read from keyboard
private String tempFileName;
private String dogsFile = "dogs.txt";
private String catsFile = "cats.txt";
e il metodo che sta causando un problema:
private KennelDemo() {
scan = new Scanner(System.in);
boolean fileNotCorrect = false;
System.out.print("Which animal are you looking to check into the kennel?: " + "\n");
System.out.println("Dog");
System.out.println("Cat");
tempFileName = scan.next();
do {
tempFileName.equals("dog");
filename = dogsFile;
fileNotCorrect = true;
/*tempFileName.equals("cat");
filename = catsFile;
fileNotCorrect = true;*/
}
while(fileNotCorrect = false);
System.out.println("That is not a valid filename, please enter either 'dog' or 'cat' in lowercase.");
Ed ecco quello che sta stampato quando si esegue il codice:
**********HELLO***********
Which animal are you looking to check into the kennel?:
Dog
Cat
cat
That is not a valid filename, please enter either 'dog' or 'cat' in lowercase.
Using file dogs.txt
Assegna un file al programma indipendentemente da cosa viene inserito e continua a caricare il programma.
Ho provato a usare catch {ma non funziona per qualche motivo, qualcuno può offrire aiuto?
Grazie!
'tempFileName.equals (" cane ");' è un confronto; restituire un valore booleano (vero/falso). Forse vuoi mettere un if (xxx) in giro? In altre parole: il concetto che vuoi studiare è "usare condizionali con se". – GhostCat
Non hai un'istruzione if, 'tempFileName.equals (" dog ");' restituisce semplicemente un valore booleano ma non stai facendo nulla con esso. – Jyr
* Uno * dei tuoi problemi è proprio qui: 'while (fileNotCorrect = false)'. Questo è un compito, non un confronto. Quello che hai lì è essenzialmente 'while (false)'. Usa '==' per confrontare. – JonK