1个数组的值等于Android中另一个数组的值

时间:2014-02-20 20:53:39

标签: android arrays

我有两个数组:

String []myExpressions = {"20+10","50+50","25+25","10+15"};
String []answers = {"30#","100#","50#","25#"};

当用户单击生成按钮时,它会从数组myExpressions生成表达式并将其显示在文本字段中。然后我要求用户使用提供的按钮输入答案。答案显示在EditText中。当用户输入答案时,他们应该输入#(如提交按钮),如果是正确的答案,它应该在文本字段中显示正确。因此,如果表达式数组中的位置为1,则正确答案位于相同位置的答案数组中。我如何检查他们是否在同一个位置?

例如:myExpressions[1]对此的正确答案为answers[1]

这是我的代码:

package com.gamesup.braingame;

import java.util.Random;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class Easy extends Activity implements OnClickListener{

EditText display;

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

    display = (EditText)findViewById(R.id.displayText);
    display.setText("?");

    final String []myExpressions = {"20+10","50+50","25+25","10+15"};
    final String []answers = {"30#","100#","50#","25#"};

    final TextView displayExpression = (TextView) findViewById(R.id.expression);
    Button generate = (Button) findViewById(R.id.random_gen);

    generate.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Random ranGenerate = new Random ();
            int random = ranGenerate.nextInt(4) ;
            displayExpression.setText(myExpressions[random]);
        }
    });

}

static boolean isEmpty = true;

public void num_Clicked(View v){
    Button btn = (Button) findViewById(v.getId());
    //getting the button object and using a view to get the id of the buttons

     if (v.getId()== R.id.del_button){
            String s = display.getText().toString();
            s = s.substring(0, s.length() - 1);
            display.setText(s);
            return;
     }


    if(isEmpty){
        display.setText(btn.getText());
        isEmpty = false;
    }
    else{
        display.append(btn.getText().toString()); 
        // storing the existing number into editText and current text is set 
        //to current button value
        //display.setText(number+btn.getText().toString());
        //the total in the editText
    }

    if (v.getId()== R.id.hash_button){
        String userAns = display.getText().toString();



    }

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub

}


 }

2 个答案:

答案 0 :(得分:0)

对于Java中的初学者数组从索引0开始,因此,为了比较数组的第一项,您应该使用类似的东西来检查事物是否相等:

EditText myAnswer = (EditText) findViewById(R.id.myAnswer);

String answer = myAnswer.getText().toString();

// Notice my loop starts at 0 because the first index of an array is 0
for(int i = 0 ; i < answers.length; i++)
{   
  if(answers[i].equals(answer))
  {
     // Congratulate the User for getting it Right


  }
}

好像你有一点不稳定的逻辑。恕我直言,你应该使用多维数组。

使用多维数组,您基本上可以设置键和值。

这就是我认为应用程序应该配置的方式

 // This Array says , I am an array that holds arrays
 String [][] multiArray = {{"4 + 5", "9"},     
                            {"20 * 3","60"},
                            {"99 - 9","90"}};  

 // Fetch your random question, since we know our questions are the first item in out Array we can use the index [x][0] depending on the index you pull from
 String question = multiArray[0][0];

 // To do this randomly
 Random ranGenerate = new Random ();
 int random = ranGenerate.nextInt(4) ;
 String question = multiArray[random][0];

 // Get the Answer from yout EditText
 String answer =  myAnswer.getText().toString();

 // Using a for loop iterate on the base index
 for(int i = 0; i < multiArray.length ; i++)
 {
      // if the answer is in position 1 of Array [i] 
      if(answer.equals(mutliArray[i][1])
      {
        // We have found the answer, Congratulate the User 

      }else{
        // Tell them how bad they are since they can't solve simple equations!
        // ....joking obviously we would be nice and let them know its not the answer
      }

 }

答案 1 :(得分:0)

在这一行

int random = ranGenerate.nextInt(4) ;

为什么不在班级中使random成为实例变量?这样你就可以保留索引,并且你知道用哪个索引来比较答案。