我有一个问题:我想创建一个小游戏,我必须创建一个如下窗口:
该程序确保单词来自单词列表并按正确的字典顺序排序。
所以,我存储了数组列表中的单词
当我试图检查数组列表中是否有单词时,代码与我无关(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 () ;
}
}
答案 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()