我怎样才能检查arrayList

时间:2017-03-20 13:29:34

标签: java arrays swing

我有一个问题:我想创建一个小游戏,我必须创建一个如下窗口:

enter image description here

该程序确保单词来自单词列表并按正确的字典顺序排序。

所以,我存储了数组列表中的单词

当我试图检查数组列表中是否有单词时,代码与我无关(j1.getText()。equals(a1)&& j2.getText()。equals(a1)) ..

首先我要检查单词是否来自数组列表,只需:((

由于

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JComponent ; 
import java.util.ArrayList ;

public class GameWords extends JFrame 

{
private static final int W = 800 ;
private static final int H = 600 ;
private JLabel heading  ;
private JLabel h1 ;
private JLabel h2 ;
private JButton b1 ;
private JButton b2 ;
private JTextField j1 ;
private JTextField j2 ;
ArrayList < String > a1 = new ArrayList < String > (30) ;
public void a1 ()
{

      a1.add("dog") ;
      a1.add("eat") ;
      a1.add("snout");
      a1.add("lonely");
      a1.add("zeal");
      a1.add("bike");
      a1.add("tree");
      a1.add("dogma");
      a1.add("pig");
      a1.add("desk");
      a1.add("zoo");
      a1.add("dirt");
      a1.add("ball");
      a1.add("troglodyte");
      a1.add("man");
      a1.add("treason");
      a1.add("my");
      a1.add("smile");
      a1.add("cat");
      a1.add("cowboy");
      a1.add("woman");
      a1.add("supercilious");
      a1.add("do");
      a1.add("mom");
      a1.add("cow");
      a1.add("ice");
      a1.add("log");
      a1.add("suber");
      a1.add("scant");
      a1.add("nose") ;

}


public GameWords ()
{
     setTitle ( " Word Order Game " ) ;
     setLayout ( new FlowLayout() ) ;
     setDefaultCloseOperation ( EXIT_ON_CLOSE ) ;
     createContent () ;
     pack();
     setVisible ( true ) ;
}

public void createContent ()
{
     heading = new JLabel () ;
     h1 = new JLabel () ;
     h2 = new JLabel () ;
     b1 = new JButton ( " Submit " ) ;
     b2 = new JButton ( " Clear " ) ;
     j1 = new JTextField ( 10 ) ;
     j2 = new JTextField ( 10 ) ;
      heading.setText( " Fun with words " ) ;
      heading.setFont ( heading.getFont().deriveFont ( 26f )) ; 
      heading.setPreferredSize(new Dimension( 300, 4 * 190 ));
    h1.setText( " Hey Kids! Want to prictice your typing and word-
 ordering Skills ? ") ;
    h2.setText( " pick two words from the following list, enter them in 
 the boxes in the correct order and then press the Submit Button ");

    add ( heading ) ;
    add ( h1 ) ;
    add ( h2 ) ;
    add ( b1 ) ;
    add ( b2 ) ;
    add ( j1 ) ;
    add ( j2 ) ;

    b1.addActionListener( new Listener() );
    b2.addActionListener( new Listener() );


}

    public class Listener implements ActionListener
    {

      public void actionPerformed ( ActionEvent e )
      {


          if ( e.getSource() == b1 )
          {
            if ( j1.getText().equals(a1) && j2.getText().equals(a1) ) 
            {
                h2.setText(" Your correct ");

            }
            else
            {
                h2.setText( " Worng ");

            }
          }
          else 
          {
              j1.setText("");
              j2.setText("");
          }

      }



    }

public static void main(String[] args) 

{
    new GameWords () ;

}

}

4 个答案:

答案 0 :(得分:0)

  

您在哪里拨打set_fact: ips: " {{servers.instances | join(',') }} " 方法

a1()

这里的上面代码不起作用,你不能只写public class Listener implements ActionListener{ public void actionPerformed ( ActionEvent e ){ if ( e.getSource() == b1 ){ if ( j1.getText().equals(a1) && j2.getText().equals(a1) ){ h2.setText(" Your correct "); }else{ h2.setText( " Worng "); } }else{ j1.setText(""); j2.setText(""); } } } 你需要迭代它所以你需要做这样的事情

a1

请将方法public class Listener implements ActionListener{ public void actionPerformed ( ActionEvent e ){ if ( e.getSource() == b1 ){ for(String arrayListItem : a1){ if (j1.getText().equals(arrayListItem) && j2.getText().equals(arrayListItem)){ h2.setText(" Your correct "); }else{ h2.setText( " Worng "); } } }else{ j1.setText(""); j2.setText(""); } } } 的名称更改为其他内容,因为它与a1()混淆

答案 1 :(得分:0)

您可以使用ArrayList.indexOf()来获取List中元素的位置。然后您可以比较2个索引以查看是否有一个在另一个之前。 https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

This method returns the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element.

答案 2 :(得分:0)

是的,Pujari是对的。

您不能使用a1,因为它代表整个ArrayList。

您可以像Pujari所说的那样进行迭代,或者您可以在ArrayList中找到项目并比较它们的索引

if (a1.indexOf(j1.getText()) <= a1.indexOf(j2.getText()) {
 h2.setText(" Your correct ");
}
else {
h2.setText( " Worng ");
}

您可以将所有文本转换为小写,也可以使用忽略大小写。

此致 克尚

答案 3 :(得分:0)

如果我可以给你一个初始化ArrayLists的提示,我会说使用textFile和BufferedReader是一种更干净和有效的方式。你基本用一个单词填充textFile中的每一行,然后使用这段代码

File file = new File("myFile");
ArrayList <String> myText = new ArrayList<String>();

try {
    FileReader fr = new FileReader(file);
    BufferedReader br = new BufferedReader(fr);

    String line;

    while((line = br.readLine()) != null){
        myText.add(line);
    }

} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

这将使您可以轻松填充大型数组列表,而无需键入每个单词.add()