如何在while循环正常工作的情况下获得此if if嵌套循环,

时间:2017-10-06 05:28:48

标签: java loops if-statement while-loop nested

所以,我现在已经在这个问题上工作了几个小时,而且我已经广泛地扫描了互联网。我无法弄清楚为什么这不适合我的生活。当我输入数字时,它会提示我重新输入,这是正确的。但是,当你输入一个字符串(“FJASFJ”)时,它仍然要求我重新输入信息,我一直在打印。看看程序搞乱的地方我仍然卡住:/

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

1 个答案:

答案 0 :(得分:2)

showInputDialog总是返回一个字符串,即使它给出了数字输入(字符串只包含一堆数字)。因此startName instanceof String总是如此。因此,采用if语句的else分支,程序继续循环。

相反,您需要更具体地决定要接受哪种字符串。例如,任何不包含数字的字符串都可以吗?一种简单(但可能不是最好的)方式是循环字符串的字符并检查每个字符是否正常。把它写成一个单独的函数会很好。然后,您可以拨打startName instanceof String或类似的内容而不是checkName(startName)