执行满足 2 个条件之一的 while 循环

Do while loop meeting one of 2 conditions

我正在尝试使用 do while 循环来确定用户是想将一只狗还是一只猫登记到 Java 中的犬舍系统中。这个想法是,他们在提示时输入 "dog" 或 "cat",任何输入都会导致错误,并且会再次提示他们输入文件名。

如果输入了"cat"或"dog",则等效文件将分配给程序(dogs.txt或cats.txt),然后系统将运行 并将该数据加载到程序中。

当前变量如下:

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";

以及导致问题的方法:

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.");

下面是当您 运行 代码时打印的内容:

**********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

无论输入什么,它都会为程序分配一个文件,然后继续加载程序。

我试过使用 catch { 但由于某种原因它不起作用,有人可以提供任何帮助吗?

谢谢!

这不是 do-while 的工作方式。你甚至都不检查。

使用这个:

 do {
    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();
    if(tempFileName.equals("dog") || tempFileName.equals("cat"))
    { 
       filename = tempFileName.equals("dog") ? dogsFile : catsFile;
       fileNotCorrect = true;
    }else{
      System.out.println("That is not a valid filename, please enter either 'dog' or 'cat' in lowercase.");
    }
}
    while(!fileNotCorrect);