2013-12-10 30 views
0

用戶將輸入一個介於1到99之間的數字。我寫了大部分代碼,我只是無法弄清楚它是否可以使用計算按鈕進行計算。我真的可以使用一些一步一步的幫助,我願意學習如果有人能幫助我。我是一個非常初學者。我需要幫助。我正在編寫一個具有GUI的程序

package minimumchris; 

import javax.swing.JButton; 
import javax.swing.JTextField; 


public class useri extends javax.swing.JFrame { 


    public useri() { 
     initComponents(); 
    } 


    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code">       
    private void initComponents() { 

     jScrollPane1 = new javax.swing.JScrollPane(); 
     jLabel1 = new javax.swing.JLabel(); 
     jTextField1 = new javax.swing.JTextField(); 
     jLabel2 = new javax.swing.JLabel(); 
     jLabel3 = new javax.swing.JLabel(); 
     jLabel4 = new javax.swing.JLabel(); 
     jLabel5 = new javax.swing.JLabel(); 
     jButton1 = new javax.swing.JButton(); 
     jButton2 = new javax.swing.JButton(); 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

     jLabel1.setText("enter a number between 1-99"); 

     jLabel2.setText("quarters"); 

     jLabel3.setText("dimes"); 

     jLabel4.setText("nickels"); 

     jLabel5.setText("pennies"); 

     jButton1.setText("calculate"); 
     jButton1.addActionListener(new java.awt.event.ActionListener() { 
      public void actionPerformed(java.awt.event.ActionEvent evt) { 
       jButton1ActionPerformed(evt); 
      } 
     }); 

     jButton2.setText("clear"); 

     org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(layout.createSequentialGroup() 
       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
        .add(layout.createSequentialGroup() 
         .addContainerGap() 
         .add(jLabel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 197, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
         .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
         .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 47, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 
        .add(layout.createSequentialGroup() 
         .add(66, 66, 66) 
         .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
          .add(jLabel5) 
          .add(jLabel4) 
          .add(jLabel3) 
          .add(jLabel2)) 
         .add(0, 0, Short.MAX_VALUE))) 
       .addContainerGap()) 
      .add(layout.createSequentialGroup() 
       .addContainerGap() 
       .add(jButton1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 195, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
       .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
       .add(jButton2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 177, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
       .addContainerGap(16, Short.MAX_VALUE)) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 
      .add(layout.createSequentialGroup() 
       .addContainerGap() 
       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.TRAILING) 
        .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 
        .add(jLabel1)) 
       .add(32, 32, 32) 
       .add(jLabel2) 
       .add(18, 18, 18) 
       .add(jLabel3) 
       .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) 
       .add(jLabel4) 
       .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 
       .add(jLabel5) 
       .add(29, 29, 29) 
       .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) 
        .add(jButton2, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 73, Short.MAX_VALUE) 
        .add(jButton1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addContainerGap(32, Short.MAX_VALUE)) 
     ); 

     pack(); 
    }// </editor-fold>       

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
     int cntrquart = 0; 
     int cntrdimes = 0; 
     int cntrpennies = 0; 
     int cntrnickels = 0; 



     JTextField jTextField=new JTextField(); // initialize textFild 
     JButton calculate =jButton1; 




     int quarters = Integer.parseInt(jTextField.getText()); 


     while (quarters >= 25) 

     { 
      quarters = quarters - 25; 
      cntrquart++; 


     } 


//dimes 
     int dimes = quarters; 


     while (dimes >= 10) 

     { 
      dimes = dimes - 10; 
      cntrdimes++; 
     } 



//nickels 
     int nickels = dimes; 


     while (nickels >= 5) 
     { 
      nickels = nickels - 5; 
      cntrnickels++; 
     } 



//pennies 
     int pennies = nickels; 


     while (pennies >= 1) 
     { 
      pennies = pennies - 1; 
      cntrpennies++; 
     } 
     jLabel2.setText("Quarter" + cntrquart); 
     jLabel3.setText("Dimes:" + cntrdimes); 
     jLabel4.setText("Nickels:" + cntrnickels); 
     jLabel5.setText("Pennies:" + cntrpennies); 
    }           

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
     /* Set the Nimbus look and feel */ 
     //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
     /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
     * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
     */ 
     try { 
      for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
       if ("Nimbus".equals(info.getName())) { 
        javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
        break; 
       } 
      } 
     } catch (ClassNotFoundException ex) { 
      java.util.logging.Logger.getLogger(useri.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (InstantiationException ex) { 
      java.util.logging.Logger.getLogger(useri.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (IllegalAccessException ex) { 
      java.util.logging.Logger.getLogger(useri.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
      java.util.logging.Logger.getLogger(useri.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
     } 
     //</editor-fold> 

     /* Create and display the form */ 
     java.awt.EventQueue.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new useri().setVisible(true); 
      } 
     }); 
    } 
    // Variables declaration - do not modify      
    private javax.swing.JButton jButton1; 
    private javax.swing.JButton jButton2; 
    private javax.swing.JLabel jLabel1; 
    private javax.swing.JLabel jLabel2; 
    private javax.swing.JLabel jLabel3; 
    private javax.swing.JLabel jLabel4; 
    private javax.swing.JLabel jLabel5; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JTextField jTextField1; 
    // End of variables declaration     
} 
+6

「去計算工作」 算得了什麼?有了這麼多的代碼,你不能指望人們仔細閱讀整個項目來找出你在說什麼。 – Vitruvius

回答

1

問題是您使用的是全新的JTextField時, 「計算」 按:

JTextField jTextField=new JTextField(); 

您正在創建一個新的:

JTextField jTextField=new JTextField(); // useless 
JButton calculate =jButton1; // useless 

int quarters = Integer.parseInt(jTextField.getText()); // should use jTextField1 (probably) 
0

RC一樣用線表示JTextField對象不是你想要的。既然你的變量是類的實例,你可以直接引用它們這樣:

int quaters = Integer.parseInt(jTextField1.getText()); 

創建一個新的變量是指該變量和特定的實例數據的整個新組不同的參數(如最新的盒內一個JTextField)是不是共享。由於您(大概)使用文本填充JTextField jTextField1,因此只能通過在jTextField1對象本身上調用getText()來檢索文本。

除了這一點,但我可能會建議使用更直觀的變量名稱,只複製代碼的相關部分。這有助於我們更快地找到您的問題。請同時提出問題本身的具體問題,「我需要幫助」不會讓你到任何地方。

作爲最後一點,如果你用簡單的分割/ mod操作替換你的循環,你的代碼可以進一步優化和簡化。相反的:

while (quarters >= 25){ 
    quarters = quarters - 25; 
    cntrquart++; 
} 

int dimes = quarters; 

//... 

做:

cntrlquart = quarters/25; //Integer division 
int dimes = quarters % 25; //Mod operation, remainder of dividing by 25. 
相關問題