2012-12-19 72 views
0

好了,所以我的計劃是獲得用戶的輸入找出素數(最多到用戶輸入的最大值),然後在一個可滾動的JFrame顯示這些結果。我已經完成了所有這些(我至少相信),但是當我嘗試編譯它時仍然遇到一個錯誤。另外,如果您看到我錯過的任何其他錯誤,請隨時通知我!獲取編譯器錯誤的原因不明

代碼:

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class PrimeNumbersJ extends JFrame 
{ 
    private static final int WIDTH=400; 
    private static final int HEIGHT=300; 

    //JFrame Components 
    private JLabel jlblMaxNumber; 

    private JTextArea jtaOutput; 

    private JTextField jtfMaxNumber; 

    private JButton jbtnCalculate, jbtnClear, jbtnExit; 

    private CalculateButtonHandler calculateHandler; 
    private ClearButtonHandler clearHandler; 
    private ExitButtonHandler exitHandler; 

    private JScrollPane scrollingResult; 

    private JPanel jpnlTop = new JPanel(); 
    private JPanel jpnlCenter = new JPanel(); 
    private JPanel jpnlBottom = new JPanel(); 


    public PrimeNumbersJ() 
    { 
     // Set the title and Size: 
     setTitle("Prime Numbers with JFrame"); 
     setSize(WIDTH, HEIGHT); 
     jpnlBottom.setLayout(new GridLayout(1, 3)); 

     // Instantiate the JLabel components: 
     jlblMaxNumber = new JLabel("Enter the Largest Number to test: ", SwingConstants.LEFT); 

     // Instantiate the JTextFields: 
     jtfMaxNumber = new JTextField(10); 

     // Make the JTextArea scrollable: 
     jtaOutput = new JTextArea(10,1); 
     scrollingResult = new JScrollPane(jtaOutput); 

     // Instantiate and register the Calculate button for clicks events: 
     jbtnCalculate = new JButton("Calculate"); 
     calculateHandler = new CalculateButtonHandler(); 
     jbtnCalculate.addActionListener(calculateHandler); 

     // Instantiate and register the Clear button for clicks events: 
     jbtnClear = new JButton("Clear"); 
     clearHandler = new ClearButtonHandler(); 
     jbtnClear.addActionListener(clearHandler); 

     // Instantiate and register the Exit button for clicks events: 
     jbtnExit = new JButton("Exit"); 
     exitHandler = new ExitButtonHandler(); 
     jbtnExit.addActionListener(exitHandler); 

     // Assemble the JPanels: 
     jpnlTop.setLayout(new GridLayout(1, 2)); 
     jpnlTop.add(jlblMaxNumber); 
     jpnlTop.add(jtfMaxNumber); 

     jpnlCenter.setLayout(new GridLayout(1, 1)); 
     jpnlCenter.add(scrollingResult); 

     jpnlBottom.setLayout(new GridLayout(1, 3)); 
     jpnlBottom.add(jbtnCalculate); 
     jpnlBottom.add(jbtnClear); 
     jpnlBottom.add(jbtnExit); 

     // Start to add the components to the JFrame: 
     Container pane = getContentPane(); 
     pane.setLayout(new BorderLayout()); 

     pane.add(jpnlTop, BorderLayout.NORTH); 
     pane.add(jpnlCenter, BorderLayout.CENTER); 
     pane.add(jpnlBottom, BorderLayout.SOUTH); 


     // Show the JFrame and set code to respond to the user clicking on the X: 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 

     jpnlTop.setLayout(new GridLayout(1, 3)); 
     jpnlTop.add(jlblMaxNumber); 
     jpnlTop.add(jtfMaxNumber); 

     jpnlCenter.setLayout(new GridLayout(1, 1)); 
     jpnlCenter.add(scrollingResult); 

     jpnlBottom.add(jbtnCalculate); 
     jpnlBottom.add(jbtnClear); 
     jpnlBottom.add(jbtnExit); 

     // Show the JFrame and set code to respond to the user clicking on the X: 
     setVisible(true); 
     setDefaultCloseOperation(EXIT_ON_CLOSE); 
    }//End Constructor 


    private class CalculateButtonHandler implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      int iRemainder,iPrimeCheck; 
      int iNumbertoTest = 0; 
      boolean bValidInput = true; 
      String sPrime =""; 

      try 
      { 
       iNumbertoTest = Integer.parseInteger(jtfMaxNumber.getText()); 
     } 
      catch (Exception aeRef) 
      { 
       JOptionPane.showMessageDialog(null,"Enter the Max Number to Test.", getTitle(), JOptionPane.WARNING_MESSAGE); 
       bValidInput = false; 
      }// end of catch 


      if (bValidInput) 
      { 

       for(iNumberToTest = 1;iNumberToTest <= 100;iNumberToTest++) { 
        iRemainder = 0; 
        for(iPrimeCheck = 1;iPrimeCheck <= iNumberToTest;iPrimeCheck++){ 
         if(iNumberToTest % iPrimeCheck == 0){ 
           iRemainder++; 
          } 
         } 
         if(iRemainder == 2 || iNumberToTest == 1) 
         { 
           String sNumber = Integer.toString(iNumberToTest); 
           sPrime = sPrime + (sNumber + "\n"); 
         } 


      } 
       // Populate the output by using the methods in the user defined class:: 

       jtaOutput.append("The Prime Numbers Are: \n" + sPrime + "\n"); 
      } // end if 
     } //end ActionPerformed 
    }//End CalculateButtonHandler 

    private class ExitButtonHandler implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      System.exit(0); 
     } 
    }//end ExitButtonHandler 


    private class ClearButtonHandler implements ActionListener 
    { 
     public void actionPerformed(ActionEvent e) 
     { 
      jtfMaxNumber.setText(""); 
      jtaOutput.setText(""); 
     } 
    } // end ClearButtonHandler 






    public static void main(String args[]) 
    { 
     PrimeNumbersJ primNumJ = new PrimeNumbersJ(); 
    } 
} 

錯誤

java:120: cannot find symbol 
symbol : method parseInteger(java.lang.String) 
location: class java.lang.Integer 
      iMaxNumber = Integer.parseInteger(jtfMaxNumber.getText()); 
           ^
+3

它的'的Integer.parseInt()'。 –

+2

使用像Eclipse的IDE,而這些問題是100X容易解決 – cowls

+0

@NidhinKrishnan它尚未10分鐘尚未所以我不能 – Kobrien

回答

4

變化Integer.parseInteger()

Integer.parseInt() 

也聲明int iNumberToTest如類變量在CalculateButtonHandler

+0

這確實是個問題,現在編譯好了。我現在已經編好了它,當我輸入一個數字,然後在屏幕上顯示沒有任何結果。你看到我做錯了什麼嗎? – Kobrien

+1

變化爲(iNumberToTest = 1; iNumberToTest <= 100; iNumberToTest ++)爲(iNumberToTest = 1; iNumberToTest <= iNumbertoTest; iNumberToTest ++) –

+0

啊好吧,非常感謝你! – Kobrien

6

Integer.parseInteger()

不存在。

您正在尋找Integer.parseInt() ???

+1

可以肯定,他正在尋找這一點。 ;) –

+0

小女孩,確實很尷尬。事實上,我正在尋找。 – Kobrien

2

嗯,其實Integer類不包含方法稱爲parseInteger。改爲使用parseInt