2014-10-22 41 views
-3

這是我在這裏的代碼在此我想輸出如下但是有些錯誤是有Java中的JCheckBox問題?

---輸出----

名稱Arun.Gender男。他什麼都不喜歡。

姓名Arun.Gender男。他喜歡板球只

名稱Arun.Gender男。他喜歡板球和網球。

姓名Arun.Gender男。他喜歡板球,足球和網球

/* 
* Register.java 
* 
* Created on 8 October, 2014, 9:27 AM 
*/ 

package Register; 

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

/** 
* 
* @author DELL 
*/ 
public class Register extends javax.swing.JFrame { 

    /** Creates new form Register */ 
    public Register() { 
    initComponents(); 
    initListener() ; 
    } 

    /** This method is called from within the constructor to 
    * initialize the form. 
    * WARNING: Do NOT modify this code. The content of this method is 
    * always regenerated by the Form Editor. 
    */ 
    @SuppressWarnings("unchecked") 
    // <editor-fold defaultstate="collapsed" desc="Generated Code"> 
    private void initComponents() { 

    bg = new javax.swing.ButtonGroup(); 
    buttonGroup2 = new javax.swing.ButtonGroup(); 
    jPanel1 = new javax.swing.JPanel(); 
    rb_female = new javax.swing.JRadioButton(); 
    cb_cricket = new javax.swing.JCheckBox(); 
    txt_name = new javax.swing.JTextField(); 
    lbl_name = new javax.swing.JLabel(); 
    cb_tennis = new javax.swing.JCheckBox(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    ta_show = new javax.swing.JTextArea(); 
    rb_male = new javax.swing.JRadioButton(); 
    cb_football = new javax.swing.JCheckBox(); 
    btn_show = new javax.swing.JButton(); 
    lbl_hobbies = new javax.swing.JLabel(); 
    lbl_gender = new javax.swing.JLabel(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Register", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Times New Roman", 1, 14))); // NOI18N 

    bg.add(rb_female); 
    rb_female.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    rb_female.setText("Female"); 

    cb_cricket.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    cb_cricket.setText("Cricket"); 

    lbl_name.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    lbl_name.setText("Name"); 

    cb_tennis.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    cb_tennis.setText("Tennis"); 

    ta_show.setColumns(20); 
    ta_show.setRows(5); 
    jScrollPane1.setViewportView(ta_show); 

    bg.add(rb_male); 
    rb_male.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    rb_male.setText("Male"); 

    cb_football.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    cb_football.setText("Football"); 

    btn_show.setFont(new java.awt.Font("Times New Roman", 1, 14)); // NOI18N 
    btn_show.setText("Show"); 

    lbl_hobbies.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    lbl_hobbies.setText("Hobbies"); 

    lbl_gender.setFont(new java.awt.Font("Times New Roman", 1, 14)); 
    lbl_gender.setText("Gender"); 

    javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
    jPanel1.setLayout(jPanel1Layout); 
    jPanel1Layout.setHorizontalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel1Layout.createSequentialGroup() 
     .addContainerGap() 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(lbl_gender) 
      .addComponent(lbl_name) 
      .addComponent(lbl_hobbies) 
      .addComponent(btn_show)) 
     .addGap(30, 30, 30) 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
      .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
       .addComponent(cb_cricket) 
       .addComponent(cb_football) 
       .addComponent(cb_tennis)) 
      .addGap(103, 103, 103)) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(rb_male) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(rb_female)) 
      .addComponent(txt_name, javax.swing.GroupLayout.DEFAULT_SIZE, 277, Short.MAX_VALUE) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 277, javax.swing.GroupLayout.PREFERRED_SIZE)) 
     .addContainerGap()) 
    ); 
    jPanel1Layout.setVerticalGroup(
     jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(jPanel1Layout.createSequentialGroup() 
     .addContainerGap() 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
      .addComponent(lbl_name) 
      .addComponent(txt_name, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
     .addGap(32, 32, 32) 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
      .addComponent(lbl_gender) 
      .addComponent(rb_female) 
      .addComponent(rb_male)) 
     .addGap(35, 35, 35) 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) 
      .addComponent(lbl_hobbies) 
      .addComponent(cb_cricket)) 
     .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(cb_football) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(cb_tennis) 
      .addGap(18, 18, 18) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
      .addGap(105, 105, 105) 
      .addComponent(btn_show))) 
     .addContainerGap()) 
    ); 

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
    getContentPane().setLayout(layout); 
    layout.setHorizontalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
     .addGap(38, 38, 38) 
     .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addGap(57, 57, 57)) 
    ); 
    layout.setVerticalGroup(
     layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(layout.createSequentialGroup() 
     .addGap(19, 19, 19) 
     .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     .addGap(23, 23, 23)) 
    ); 

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

    public void initListener() 
    { 
    ActionListener al=new ActionListener() 
    { 

     String name; 
     String gender; 
     String hobbies[] = new String[10];    


     String data1; 
     String data2; 
     String data3; 
     int i=-1; 
     String show; 


     public void actionPerformed(ActionEvent e) 
     { 
     name = txt_name.getText(); 

     data1="Name is "+name+". "; 

     //************************************* 

     if (rb_male.isSelected()) 
     { 
      gender = "Male"; 

     } 
     else if (rb_female.isSelected()) 
     { 
      gender = "Female"; 
     } 


     data2="Gender "+gender+". "; 


     if(gender.equals("Male")) 
     { 
      data3="He likes "; 
     } 
     else 
     { 
      data3="She likes "; 
     } 




     //************************************* 

     String b = ""; 

     if (cb_cricket.isSelected()) 
     { 
      hobbies[i++] = "Cricket"; 

     } 
     if (cb_football.isSelected()) 
     { 
      hobbies[i++] = "Football"; 

     } 
     if (cb_tennis.isSelected()) 
     { 
      hobbies[i++] = "Tennis"; 

     } 
     System.out.println("iSelected= " + i); 

     if (i == -1) 
     { 
      b = " nothing"; 
     } 
     else 
     { 
      for (int j = 0; j < i; j++) 
      { 

      if (i > 0) 
      { 
       if (j < i - 2) 
       { 
       b = b + hobbies[j] + ", "; 
       } 
       else if (j == i - 2) 
       { 
       b = b + hobbies[j] + " and "; 
       } 
       else 
       { 
       b = b + hobbies[j] + "."; 
       } 
      } 
      else if (i == 0) 
      { 

       b = b + hobbies[j] + " only"; 

      } 
      } 
     } 
     show=data1+data2+data3+b; 
     ta_show.setText(show); 


     //************************************* 







     //************************************* 
      // ta_show.setText(data1+data2+b); 
     } 



    }; 
    btn_show.addActionListener(al); 
    } 



    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
     new Register().setVisible(true); 
     } 
    }); 
    } 

    // Variables declaration - do not modify 
    private javax.swing.ButtonGroup bg; 
    private javax.swing.JButton btn_show; 
    private javax.swing.ButtonGroup buttonGroup2; 
    private javax.swing.JCheckBox cb_cricket; 
    private javax.swing.JCheckBox cb_football; 
    private javax.swing.JCheckBox cb_tennis; 
    private javax.swing.JPanel jPanel1; 
    private javax.swing.JScrollPane jScrollPane1; 
    private javax.swing.JLabel lbl_gender; 
    private javax.swing.JLabel lbl_hobbies; 
    private javax.swing.JLabel lbl_name; 
    private javax.swing.JRadioButton rb_female; 
    private javax.swing.JRadioButton rb_male; 
    private javax.swing.JTextArea ta_show; 
    private javax.swing.JTextField txt_name; 
    // End of variables declaration 

} 

這段代碼的錯誤部分是

 String b = ""; 

     if (cb_cricket.isSelected()) 
     { 
      hobbies[i++] = "Cricket"; 

     } 
     if (cb_football.isSelected()) 
     { 
      hobbies[i++] = "Football"; 

     } 
     if (cb_tennis.isSelected()) 
     { 
      hobbies[i++] = "Tennis"; 

     } 
     System.out.println("iSelected= " + i); 

     if (i == -1) 
     { 
      b = " nothing"; 
     } 
     else 
     { 
      for (int j = 0; j < i; j++) 
      { 

      if (i > 0) 
      { 
       if (j < i - 2) 
       { 
       b = b + hobbies[j] + ", "; 
       } 
       else if (j == i - 2) 
       { 
       b = b + hobbies[j] + " and "; 
       } 
       else 
       { 
       b = b + hobbies[j] + "."; 
       } 
      } 
      else if (i == 0) 
      { 

       b = b + hobbies[j] + " only"; 

      } 
      } 
     } 
     show=data1+data2+data3+b; 
     ta_show.setText(show); 
+7

精心製作的「一些錯誤」 – Sufian 2014-10-22 06:45:50

+1

呀,對錯誤是什麼複雜的。而有關您想要實現的某些信息會非常有幫助。目前這是一個巨大的代碼轉儲,它幾乎沒有收到任何迴應。 – 2014-10-22 06:48:29

+0

請複製這整個代碼並運行 – 2014-10-22 07:04:19

回答

0

那裏有很多問題。

首先兩性之一應該被預先選定。如果沒有,你會得到一個NullPointerException。

而對於ArrayIndexOutOfBoundsException異常我建議使用清單:

LinkedList<String> hobbies = new LinkedList<String>(); 

//... 

hobbies.clear(); 

    if (cb_cricket.isSelected()) 
    { 
     hobbies.add("Cricket"); 

    } 
    if (cb_football.isSelected()) 
    { 
     hobbies.add("Football"); 

    } 
    if (cb_tennis.isSelected()) 
    { 
     hobbies.add("Tennis"); 

    } 

    if (hobbies.size() == 0) 
    { 
     b = " nothing"; 
    } 
    else 
    { 
     for (int j = 0; j < hobbies.size(); j++) 
     { 
      if(j > 0) 
      { 
       if(j == hobbies.size()-1) 
       { 
        b += " and "; 
       } 
       else 
       { 
        b += ", "; 
       } 
      } 

      b+= hobbies.get(j); 
     } 

     if (hobbies.size() == 1) 
     { 

      b += " only"; 

     } 

     b += "."; 

    } 

使用你得到一個更好的可擴展的結果一個LinkedList。

獎勵積分用於與一個StringBuilder替換b

+0

答案爵士是不正確 – 2014-10-22 07:42:18

+0

@SymonKt你的意思是在業餘愛好列表中缺少「」如上使用這樣的:我糾正了。但是這個網站不是爲你寫代碼。 – Dawnkeeper 2014-10-22 08:06:51

+0

正確的先生得到它謝謝 – 2014-10-22 08:35:52

0

還有比(我假設你的意思)更多的ArrayIndexOutOfBounds問題。如果是這種情況,請嘗試使用

hobbies[++i] = "Cricket"; hobbies[++i] = "Football"; hobbies[++i] = "Tennis";

,而不是我++。我+ +初始化變量與值-1 當使用,執行該命令之後的值被遞增。如果您使用++ i,則在命令執行前該值會增加。

正如我前面提到的,還有比這多了一個問題。不是運行時錯誤,但是即使經過這種更改(++ i),您仍然無法獲得所需的輸出。

+0

是爵士正確的,但如果蟋蟀onece選擇和取消再次選擇板球,我值增量 – 2014-10-22 07:52:43