2017-02-05 7 views
-3

forループ内にある1つのメッセージダイアログボックスに出力を表示する際に問題が発生しています。現在、すべての出力を別々のボックスに表示しています。目標は、ユーザーに2つの整数を尋ねた後、それらの数字の間に素数と回文の1つのメッセージボックスを表示する必要があります。以下のような: "数値xとyの間:(ここでは素数)JAVA:ForループとJOptionPane

回文:(ここでは回文素数)"

私は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-loopの中にメッセージボックスを表示しようとするので、for-loopや条件がfalseになるまでメッセージボックスを表示し始めます。 – Shashanth

答えて

1

あなたif(i == k)は、メッセージボックスにそれが素数を見つけて、それを表示するたびに表示されています。あなたがしたいことは、すべての素数を持って、それらをメッセージボックスに表示することです。これを行う方法の1つは、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); 

} 
関連する問題