如何在while循环内正确工作的其他嵌套循环,

问题描述:

因此,我一直在研究这个问题几个小时,并且我已经广泛地扫描了互联网。我无法弄清楚为什么这不适合我的生活。当我输入数字时,它会提示我重新输入,这是正确的。然而,当你输入一个字符串(“FJASFJ”)它仍然要求我重新输入信息,我已经print.ln看到程序搞乱了,我仍然卡住:/如何在while循环内正确工作的其他嵌套循环,

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

请您描述您想要做什么,我的意思是您的商业条件。你想只允许输入数字 – msoliman

+0

我想只允许字母字符。因此,没有数字,符号或任何其他字母(“ABC”) – Sommos

+0

要检查输入内容,不应使用'instanceof'。它用于检查变量的类类型。您可以尝试正确表达您的需求。例如'startName.matches( “^ [A-ZA-Z] * $”)' – Alex

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

相反,您需要更具体地决定要接受的字符串类型。例如,任何不包含数字的字符串是否可以?一个简单的(但可能不是最好的)方法是遍历字符串的字符并检查每个字符是否正确。将它作为一个单独的函数编写会很好。然后,而不是startName instanceof String你可以拨打checkName(startName)或类似的东西。