如何在android主要活动中实现队列

时间:2013-10-16 11:16:08

标签: java android data-structures queue

这是我第一次在这里发帖,因为我很绝望。无论如何,我有这个项目,我在实现队列时遇到了麻烦。我的Android应用程序是使用队列实现的rebus拼图。在游戏开始时,我想将包含每个谜题答案的所有节点排队。然后将显示拼图的照片以及用户可以输入答案的文本字段和按钮。我的问题是我不知道如何在java中实现队列。因此,当我按下按钮提交答案时,它将使当前节点出列,然后级别将增加,同时将显示不同的图片。但如果用户的回答是错误的,那么它将只停留在当前的难题中。

这是我的拼图节点的代码:

    package com.project.rebus;

    public class PuzzleNode {

    private String answer;
    private PuzzleNode next;

    public PuzzleNode(String answer, PuzzleNode next) {
        this.answer = answer;
        this.next = next;
    }

    public String getAnswer() {
        return answer;
    }

    public void setAnswer(String answer) {
        this.answer = answer;
    }

    public PuzzleNode getNext() {
        return next;
    }

    public void setNext(PuzzleNode next) {
        this.next = next;
    }
}

这是我的队列代码:

package com.project.rebus;

public class PuzzleQueue {
  PuzzleNode head;
  PuzzleNode tail;
  int size;
  int score;

 public PuzzleQueue() {
    head = null;
    tail = null;
    size = 0;
    score = 0;
}

 public int size() {
    return size;
}

public boolean isEmpty() {
    if(head == null)
        return true;
    else
       return false;
}

 public void enqueue (PuzzleNode data)
{

    PuzzleNode n = new PuzzleNode(data.getAnswer(), null);

    if (tail != null)
        tail.setNext(n);
    tail = n;

    if (head == null)
        head = n;

    size++;
}

 public String dequeue ()
{
     String temp;

    temp =  head.getAnswer();
    head = head.getNext();       
    size--;

     if (size == 0)
        tail = null;

    return temp;
}

 public String front()
 {
     return head.getAnswer();
 }

public boolean compare(String answer) {
    if (head.getAnswer().equalsIgnoreCase(answer))
        return true;
    else return false;
}
}

这是我在Android中的Activity One的代码,我将在其中实现队列:

   package com.project.rebus;

   import android.os.Bundle;
   import android.app.Activity;
   import android.view.Menu;
   import android.view.View;
   import android.widget.EditText;
   import android.widget.ImageView;
   import android.widget.TextView;


  public class RebusActivityOne extends Activity {

 PuzzleQueue rebus = new PuzzleQueue();
 PuzzleNode p1 = new PuzzleNode("for instance", null);
 PuzzleNode p2 = new PuzzleNode("too funny for words", null);
 PuzzleNode p3 = new PuzzleNode("once in a blue moon", null);

int level = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_rebus_activity_one);

    ImageView image = (ImageView) findViewById (R.drawable.r1);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.rebus_activity_one, menu);
    return true;
}


public void button (View view) {
    rebus.enqueue(p1);
        rebus.enqueue(p2);
        rebus.enqueue(p3);

        ImageView image = null;

        while (level <= 3) {
            if (level == 1) {
                image = (ImageView) findViewById (R.id.r1);
            }else if (level == 2) {
                image.setImageResource(R.drawable.r2);
            }else if (level == 3) {
                image.setImageResource(R.drawable.r3);
            }

            boolean correct = false;
            do {
                EditText answerField = (EditText)findViewById(R.id.answerField);
                String answer = answerField.getText().toString();
                if (rebus.compare(answer) == true) {
                    correct = true;
                    rebus.dequeue();
                    level++;
                }//else System.out.println("Wrong answer");
            }while(correct == false);
        }
}


}

我一直在按钮代码上出错。 IDK什么都可以做。 HUHUHU。 任何帮助将非常感谢。

0 个答案:

没有答案