因此,我已经在这个问题上工作了几个小时,并且已经对互联网进行了广泛的扫描。我无法弄清楚为什么这对我的生活没有用。输入数字时,它会提示我重新输入,这是正确的。但是,当您输入一个字符串(“ 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)
。