因此,我已经在这个问题上工作了几个小时,并且已经对互联网进行了广泛的扫描。我无法弄清楚为什么这对我的生活没有用。输入数字时,它会提示我重新输入,这是正确的。但是,当您输入一个字符串(“ FJASFJ”)时,它仍然要求我重新输入信息,因此我已经被print.ln看到,程序在哪里搞砸了,我仍然卡住了:/

import javax.swing.JOptionPane;
public class functions {
private static boolean x;
    private static String name;
    private static String fur;
    private static Number weight;
    public static void nameExceptionFunc(String startName){
        if(!(startName instanceof String)){
            name=startName;
        }else{
            x=false;
            while(x==false){
                System.out.println("Sorry, but that is not an acceptable string.");
                startName=JOptionPane.showInputDialog("Re-enter an acceptable value for your cat's name: ");
                if(!(startName instanceof String)){
                    System.out.println("o");
                    name=startName;
                    break;
                }else{
                    System.out.println("i");
                    continue;
                }
            }
        }
    }

最佳答案

showInputDialog始终返回一个字符串,即使给定了数字输入(该字符串仅包含一堆数字)。因此,startName instanceof String始终为真。因此,如果执行if语句的else分支,程序将继续循环。

相反,您需要更具体地决定要接受哪种字符串。例如,任何不包含数字的字符串都可以吗?一种简单(但可能不是最好)的方法是遍历字符串中的字符并检查每个字符是否正确。最好将其作为一个单独的函数编写。然后,您可以调用startName instanceof String或类似的方法来代替checkName(startName)

09-06 19:37