如何在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;
}
}
}
}
答
showInputDialog
总是返回一个字符串,即使它给了数字输入(该字符串只包含一串数字)。因此startName instanceof String
总是如此。因此,if语句的else分支被采用,程序继续循环。
相反,您需要更具体地决定要接受的字符串类型。例如,任何不包含数字的字符串是否可以?一个简单的(但可能不是最好的)方法是遍历字符串的字符并检查每个字符是否正确。将它作为一个单独的函数编写会很好。然后,而不是startName instanceof String
你可以拨打checkName(startName)
或类似的东西。
请您描述您想要做什么,我的意思是您的商业条件。你想只允许输入数字 – msoliman
我想只允许字母字符。因此,没有数字,符号或任何其他字母(“ABC”) – Sommos
要检查输入内容,不应使用'instanceof'。它用于检查变量的类类型。您可以尝试正确表达您的需求。例如'startName.matches( “^ [A-ZA-Z] * $”)' – Alex