2017-02-05 124 views
-3

我有問題顯示我的輸出到一個for循環內的消息對話框。它目前在單獨的框中顯示每個輸出。目標是:在詢問用戶兩個整數之後,它應該在這些數字之間顯示一個素數和一個迴文的消息框。如:JAVA:For循環和JOptionPane

「的數字X和Y之間(這裏素數)

迴文(迴文這裏素)」

我已經試過StringBuilder的,但我是不是真的成功。任何想法和提示都會有所幫助。這裏是一個剪斷

for (int i = x; i <= y; i++) { 
     int k; 
     for (k = 2; k < i; k++) { 
      int n = i % k; 
      if (n == 0) 
       break; 
     } 
if (i == k) { 
     JOptionPane.showMessageDialog(null, "Between the numbers " + x + " and " + y + ": "); 
     String output = i + ""; 
     //this is where my issues start 
     //JOptionPane.showMessageDialog(null, output, "Prime Numbers and Palindromes", JOptionPane.INFORMATION_MESSAGE); 
} 
} 
+1

這是_expected_輸出。因爲,當if(i == k)變爲true時,你試圖在for循環中顯示消息框,它將開始顯示消息框,直到for-loop或條件變爲false。 – Shashanth

回答

1

if(i == k)每次找到一個素數,其顯示時間顯示一個消息框。你想要做的是擁有所有素數,然後在消息框中顯示它們。一種方法是通過在for循環中使用StringBuilder並在if(i == k)中追加所需的值,然後當for循環結束時在toString()的消息框中顯示結果。以下是我如何通過將素數的發現作爲函數來實現的,而不是每次在if(i == k)中使用StringBuilder顯示消息框並將其作爲字符串返回。最終的輸出是你顯示的內容。

public static String getPalindromicPrimes(int x, int y) { 

    StringBuilder sb = new StringBuilder(); 
    JOptionPane.showMessageDialog(null, "Between the numbers " + x + " and " + y + ": "); 

    for (int i = x; i <= y; i++) { 
     int k; 
     for (k = 2; k < i; k++) { 
      int n = i % k; 
      if (n == 0) 
       break; 
     } 
     if (i == k) { 
      sb.append(" " + i + " "); 
     } 

    } 
    return sb.toString(); 

} 

public static void main(String[] args) { 

    String output = getPalindromicPrimes(4, 7); 

    JOptionPane.showMessageDialog(null, "Palindromes: " + output, "Prime Numbers and Palindromes", JOptionPane.INFORMATION_MESSAGE); 

}