2017-10-06 46 views
0

因此,我一直在研究這個問題幾個小時,並且我已經廣泛地掃描了互聯網。我無法弄清楚爲什麼這不適合我的生活。當我輸入數字時,它會提示我重新輸入,這是正確的。然而,當你輸入一個字符串(「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

回答

2

showInputDialog總是返回一個字符串,即使它給了數字輸入(該字符串只包含一串數字)。因此startName instanceof String總是如此。因此,if語句的else分支被採用,程序繼續循環。

相反,您需要更具體地決定要接受的字符串類型。例如,任何不包含數字的字符串是否可以?一個簡單的(但可能不是最好的)方法是遍歷字符串的字符並檢查每個字符是否正確。將它作爲一個單獨的函數編寫會很好。然後,而不是startName instanceof String你可以撥打checkName(startName)或類似的東西。