所以,我现在已经在这个问题上工作了几个小时,而且我已经广泛地扫描了互联网。我无法弄清楚为什么这不适合我的生活。当我输入数字时,它会提示我重新输入,这是正确的。但是,当你输入一个字符串(“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;
}
}
}
}
答案 0 :(得分:2)
showInputDialog
总是返回一个字符串,即使它给出了数字输入(字符串只包含一堆数字)。因此startName instanceof String
总是如此。因此,采用if语句的else分支,程序继续循环。
相反,您需要更具体地决定要接受哪种字符串。例如,任何不包含数字的字符串都可以吗?一种简单(但可能不是最好的)方式是循环字符串的字符并检查每个字符是否正常。把它写成一个单独的函数会很好。然后,您可以拨打startName instanceof String
或类似的内容而不是checkName(startName)
。