JAVA: как объединить окна сообщений с несколькими выходами - PullRequest
4 голосов
/ 05 марта 2012

Я изучаю Java и имею довольно простую программу, которая возвращает последовательность чисел в соответствии с гипотезой Коллатца . Я могу сделать так, чтобы он выводился на консоль, или у меня всплыло много окон JOptionPane.showMessageDialog(), по одному с каждым номером в нем.

Как мне объединить JOptionPane.showMessageDialog() для отображения всех выходов в одном JOptionPane.showMessageDialog()?

Код:

package collatz;

import java.util.Random;
import javax.swing.*;

public class Collatz {

/**
 * Demonstrates the Collatz Cojecture
 * with a randomly generated number
 */

public static void main(String[] args) {
    Random randomGenerator = new Random();
    int n = randomGenerator.nextInt(1000);

    JOptionPane.showMessageDialog(null, "The randomly generated number was: " + n);


    while(n > 1){
        if(n % 2 == 0){
            n = n / 2;
            JOptionPane.showMessageDialog(null, n);
        }
        else{
            n = 3 * n + 1;
            JOptionPane.showMessageDialog(null, n);
        }
    }

    JOptionPane.showMessageDialog(null, n);
    JOptionPane.showMessageDialog(null, "Done.");

}

}

Спасибо!

- ZuluDeltaNiner

1 Ответ

4 голосов
/ 05 марта 2012

Отслеживайте всю отображаемую строку, а затем отображайте ее в конце:

public static void main(String[] args) {
    Random randomGenerator = new Random();
    int n = randomGenerator.nextInt(1000);

    StringBuilder output = new StringBUilder("The randomly generated number was: " + n + "\n");

    while(n > 1){
        if(n % 2 == 0){
            n = n / 2;
        }
        else{
            n = 3 * n + 1;
        }
        output.append(n + "\n");
    }

    output.append("Done.");
    JOptionPane.showMessageDialog(null, output);

}
...