在多条if条件下使用arraylist

时间:2016-10-20 11:14:05

标签: android if-statement arraylist

我改变了主意使用swipemotions:因为使用swipemotions相当复杂,所以我决定只使用简单的按钮来使用更大的'和'较小的'

我目前正在Android Studio中开展一个学校项目,到目前为止,我已经编写了一个生成随机方程式的代码。 以下是创建随机方程的代码:

String[] operationSet = new String[]{"+", "-", "/", "*"};
String stringResultOfEquation;
String equation;
double doubleAnswer1;
public void start1() {
    Random random = new Random();
    int numOfOperations = random.nextInt(2) + 1;

    List<String> operations = new ArrayList<>();

    for (int i = 0; i < numOfOperations; i++) {
        String operation = operationSet[random.nextInt(4)];
        operations.add(operation);
    }

    int numOfNumbers = numOfOperations + 1;
    List<Integer> numbers = new ArrayList<>();

    for (int i = 0; i < numOfNumbers; i++) {
        int number = random.nextInt(10)+1;
        numbers.add(number);
    }

    String equation = "";
    for (int i = 0; i < numOfOperations; i++) {
        equation += numbers.get(i);
        equation += operations.get(i);
    }
    equation += numbers.get(numbers.size() -1);

    TextView TextEquation = (TextView)findViewById(R.id.textView3);
    TextEquation.setText(equation);

    String stringResultOfEquation = String.valueOf(equation);

    double doubleAnswer1 = eval(stringResultOfEquation);

    String stringAnswer = Double.toString(doubleAnswer1);

    TextView textAnswer = (TextView)findViewById(R.id.textView4);
    textAnswer.setText(stringAnswer);
}

现在,应用程序在屏幕上显示两个方程式,然后用户必须自杀,第二个方程式的结果比第一个方程式更大或更小。如果第二个等式较大,则用户必须执行向上滑动,如果第二个等式较小,则用户必须执行向下滑动操作。 但是,我不知道如何为此编写代码。我试过这个:

if((doubleAnswer1 > doubleAnswer2) && (MotionEvent.ACTION_DOWN = true)){
    //create new equation
    }

但那并没有奏效。它告诉我&#34;运营商&amp;&amp;不能应用于boolean,int&#34;

现在我很好奇我是否可以使用这样的arraylist:

if(doubleAnswer1 > doubleAnswer2){
        // put "smaller" to arraylist
    } else {
        // put "bigger" to arraylist
    }

    if(MotionEvent.ACTION_DOWN = true){
        // put "smaller" to arraylist
    } 
    if(MotionEvent.ACTION_UP = true){
        // put "bigger" to arraylist
    }

然后,如果arraylist的元素是相同的,代码将检查arraylist。如果是,则生成下一个等式。如果arraylist的元素不同,则该过程将被停止。 我真的不知道这是否有效,所以有人可能会告诉我,是否可以? 或者还有其他方法可以解决我的问题吗?

如果我的问题中有任何不明确的地方,请随时提出,我会尽力澄清问题:)

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

当你写这样的语句时,编辑器会告诉你(Android工作室希望如此)你不能将int与boolean进行比较。因为趋势是零意味着虚假而1意味着真实,但在java中你不能这样做。

你可以这样尝试

@Override
public boolean onTouch(View v, MotionEvent event) {


    if (event.getAction() == MotionEvent.ACTION_DOWN)
    {


        return false;
    }

    return false;
}

希望有助于理解......

答案 1 :(得分:0)

“=”是一项任务, 比较值使用“==”。

关于识别手势,请查看https://developer.android.com/training/gestures/detector.html#detecthttps://developer.android.com/reference/android/view/GestureDetector.html

你需要这样的东西:

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    mDetector = new GestureDetectorCompat(this,this);
    ...
}

@Override
public boolean onFling(MotionEvent event1, MotionEvent event2, float velocityX, float velocityY) {
    Log.d(TAG, "fling! - direction is " + (velocityY > 0 ? "down" : "up"));
    return true;
}