2016-04-14 256 views
-1

我正在創建一個遊戲,其中創建了一個包含一個字母的字符串,並且希望在隨機字母被選中時單擊的按鈕發生。問題是與.equals(),我也試圖在String數組變量更改char數組,並使用==有同樣的問題:.equal不能在其他語句中工作如果語句爲

public class JeuxMemoire extends Applet implements ActionListener { 
    Button start; 
    Button end; 

    Button un= new Button("q"); 
    Button deux= new Button("w"); 
    Button trois= new Button("e"); 
    Button quatre= new Button("r"); 
    Button cinq= new Button("t"); 
    Button six= new Button("y"); 
    Button sept= new Button("u"); 
    Button huit= new Button("i"); 
    Button neuf= new Button("o"); 
    Button dix= new Button("p"); 
    Button onze= new Button("a"); 
    Button douze= new Button("s"); 
    Button treize= new Button("d"); 
    Button quatorze= new Button("f"); 
    Button quinze= new Button("g"); 
    Button seize= new Button("h"); 

    int scur = 0; 
    String[] num = {"q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "a", "s", "d", "f", "g", "h"}; 
    Label score; 
    Label timer = new Label("Lettre: ") ; 
    Label lettre = new Label("temps: "); 

    public void RestartGame() 
    { 
     start.setEnabled(true); 
     un.setEnabled(false); 
     deux.setEnabled(false); 
     trois.setEnabled(false); 
     quatre.setEnabled(false); 
     cinq.setEnabled(false); 
     six.setEnabled(false); 
     sept.setEnabled(false); 
     huit.setEnabled(false); 
     neuf.setEnabled(false); 
     dix.setEnabled(false); 
     onze.setEnabled(false); 
     douze.setEnabled(false); 
     treize.setEnabled(false); 
     quatorze.setEnabled(false); 
     quinze.setEnabled(false); 
     seize.setEnabled(false); 
     scur = 0; 

    } 

    public String populateStringArray() 
    { 

     int ran = (int) (Math.random() * 15); 
     //System.out.println(ran); 
     return num[ran]; 
    } 

    public void init(){ 

     this.setLayout(new BorderLayout()); 
     this.setBackground(Color.ORANGE); 
     Font policeApplet = new Font("ComicSans", Font.BOLD, 20); 
     this.setFont(policeApplet); 


    start = new Button ("Commence"); 
    start.addActionListener(this); 

    Panel superior = new Panel(); 
    superior.setLayout(new BorderLayout()); 
    superior.add(start); 
    this.add(superior,"North"); 

    Panel time = new Panel(); 
    time.add(timer); 
    superior.add(time,"East"); 

    Panel lett = new Panel(); 
    lett.add(lettre); 
    superior.add(lett,"West"); 

    Panel central = new Panel(); 
    central.setLayout(new GridLayout(4, 4)); 
    this.add(central, "Center"); 

    central.add(un); 
    central.add(deux); 
    central.add(trois); 
    central.add(quatre); 
    central.add(cinq); 
    central.add(six); 
    central.add(sept); 
    central.add(huit); 
    central.add(neuf); 
    central.add(dix); 
    central.add(onze); 
    central.add(douze); 
    central.add(treize); 
    central.add(quatorze); 
    central.add(quinze); 
    central.add(seize); 

    RestartGame(); 

    score = new Label ("Votre Score est " + scur); 
    this.add(score,"South"); 

    un.addActionListener(this); 
    deux.addActionListener(this); 
    trois.addActionListener(this); 
    quatre.addActionListener(this); 
    cinq.addActionListener(this); 
    six.addActionListener(this); 
    sept.addActionListener(this); 
    huit.addActionListener(this); 
    neuf.addActionListener(this); 
    dix.addActionListener(this); 
    onze.addActionListener(this); 
    douze.addActionListener(this); 
    treize.addActionListener(this); 
    quatorze.addActionListener(this); 
    quinze.addActionListener(this); 
    seize.addActionListener(this); 
    } 

    public void actionPerformed(ActionEvent event) 
    { 
     String lettres ="";// populateStringArray(); 
     //Button Buton = (Button) event.getSource(); 
     Button buton = (Button) event.getSource(); 
     if (buton == start){ 
      lettres = populateStringArray(); 
      timer.setText("Let:" + lettres); 
      start.setEnabled(false); 
      un.setEnabled(true); 
      deux.setEnabled(true);  
      trois.setEnabled(true); 
      quatre.setEnabled(true); 
      cinq.setEnabled(true); 
      six.setEnabled(true); 
      sept.setEnabled(true); 
      huit.setEnabled(true); 
      neuf.setEnabled(true); 
      dix.setEnabled(true); 
      onze.setEnabled(true); 
      douze.setEnabled(true); 
      treize.setEnabled(true); 
      quatorze.setEnabled(true); 
      quinze.setEnabled(true); 
      seize.setEnabled(true); 

     } 
     else if ((buton == un)&&(lettres.equals("q"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if ((buton == deux)&&(lettres.equals("w"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == trois)/*&&(lettres.equals("e"))*/){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if ((buton == quatre)&&(lettres.equals("r"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == cinq)&&(lettres.equals("t"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == six)&&(lettres.equals("y"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == sept)&&(lettres.equals("u"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == huit)&&(lettres.equals("i"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == neuf)&&(lettres.equals("o"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == dix)&&(lettres.equals("p"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == onze)&&(lettres.equals("a"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == douze)&&(lettres.equals("s"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == treize)&&(lettres.equals("d"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == quatorze)&&(lettres.equals("f"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == quinze)&&(lettres.equals("g"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 
     else if((buton == seize)&&(lettres.equals("h"))){ 
      scur++; 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
      timer.setText("Lettre:" + lettres); 
      score.setText("Score: "+ scur); 
     } 

     //else System.out.println(lettres); 
     else { 
      lettres = populateStringArray(); 
      System.out.println(lettres); 
     } 

    } 


} 
+0

請將代碼降至最低,以重現此問題。閱讀[MCVE]。 – Savior

+0

考慮使用一個字符數組而不是字符串作爲變量_num_,這樣您就可以使用_lettres =='q'_ –

回答

1

你的問題是,lettres總是初始化爲空字符串「」任何時候這個動作監聽器都會被觸發,因此equals()方法將總是檢查一個空字符串。沒有其他的陳述可能是真的。