0

我的 JPanel 所有设置都有一个可用的 JFrame GUI。我正在尝试组合我已经设置和工作的两个不同的代码。第一个代码是 JPanel 中的文本转换器 toUpperCase,第二个代码是质数因子(不是质数)代码。我一直试图让 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

第一步:换行

  public static void main(String[] args) {

类似于

  public static String primeFactors(int number) {

并使该方法使用提供的参数number而不是要求输入。

第 2 步:在其中创建一个StringBuilderprimeFactors并将所有调用更改System.out.print为调用stringBuilder.append()

第三步:设置stringBuilder.toString()为返回值primeFactors

第四步:换行

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

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

我将把错误处理和输入安全保护留给你。

于 2012-06-27T06:15:54.147 回答