0

JPanelがすべてセットアップされたJFrameGUIが機能しています。セットアップして機能している2つの異なるコードを組み合わせようとしています。最初のコードはJPanelのUpperCaseへのテキストコンバーターで、2番目のコードは素因数(素数ではない)コードです。私はJPanelに、ユーザーが入力した任意の数の素因数の出力を提供させようとしています。これが私が持っているものです...

JPanelコード

public class Prime extends JPanel { 
    private JLabel formattedText;

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.getContentPane().add(new Prime());
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        frame.setVisible(true);
    }

    public Prime(){
        setLayout(new BoxLayout(this,BoxLayout.Y_AXIS));
        JPanel panel = new JPanel(); panel.setPreferredSize(new Dimension(640,100));
        JLabel label = new JLabel("Enter a number to check for it's prime number(s).");
        JTextField field = new JTextField("0");
        field.addActionListener(new FieldListener());
        add(label);
        add(field);
        add(panel);


        panel = new JPanel(); panel.setPreferredSize(new Dimension(640,380));
        formattedText = new JLabel();
        panel.add(formattedText);
        add(panel);
    }

    private class FieldListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            JTextField field = (JTextField)event.getSource();
                formattedText.setText(field.getText().toUpperCase()); // I know this is wrong... I can't figure out what to change here to get it to pull the code below.
            }
    }
    public class PrimeFactors {

    }
}

これが素因数コードです

public class Temp {

    static int primeCheck = 1;

    public static void main(String[] args) {
        System.out.println("Enter a number whose Prime factors are desired: ");
        Scanner numS = new Scanner(System.in);
        int numPriFac = 0;
        if (numS.hasNextInt()) {
            numPriFac = numS.nextInt();
        }

        System.out.println("All the Prime Factors of the entered number are:");

        for (int tap = 1; tap <= numPriFac; tap++) {
            if (numPriFac % tap == 0) {
                for (int primeTest = 2; primeTest < tap; primeTest++) {
                    if (tap % primeTest == 0) {
                        primeCheck = 1;
                        break;
                    } else {
                        primeCheck = 0;
                    }
                }
                if (primeCheck == 0 || tap == 2) {
                    System.out.print(tap + " ");
                }
            }
        }
    }
}

一番下にある最後のPrimeFactorsコードは、私が自分で動作させようとしていたときから残っているものです。助けてくれてありがとう!!!

4

1 に答える 1

0

ステップ 1: 行を変更する

  public static void main(String[] args) {

のようなものに

  public static String primeFactors(int number) {

number入力を要求する代わりに、メソッドが提供された引数を使用するようにします。

ステップ 2: でStringBuilderを作成し、primeFactorsすべての呼び出しを呼び出しに変更しますSystem.out.printstringBuilder.append()

ステップ 3:stringBuilder.toString()の戻り値として設定primeFactors

ステップ 4: 行を変更する

  formattedText.setText(field.getText().toUpperCase());

  formattedText.setText(Temp.primeFactors(Integer.parseInt(field.getText())));

エラー処理と入力セーフガードはお任せします。

于 2012-06-27T06:15:54.147 に答える