2016-10-20 2 views
0

я изменил свое мнение об использовании swipemotions: Как это довольно сложно использовать swipemotions, я решил просто использовать простые кнопки с «больше» и «меньше»Использование ArrayList для нескольких, если условия

Я в настоящее время работает над школьным проектом в Android Studio, и до сих пор я написал код, который генерирует случайное уравнение. Вот код, который gereates случайного уравнения:

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); 
} 

Теперь приложение отображает два уравнения на экране, а затем пользователь должен dicide кастрированного барана второго уравнение имеет больший или меньший результат, чем первый. Если второе уравнение больше, пользователь должен сделать swipemotion UP и, если второе уравнение меньше, пользователь должен сделать swipemotion DOWN. Однако я не знаю, как написать код для этого. Я пробовал:

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

но это не сработало. Он сказал мне, что «Оператор & & не может быть применен к булева, ИНТ»

Теперь я интересно, если я мог бы использовать 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 отличаются, процесс будет остановлен. Я действительно не знаю, будет ли это работать, так может кто-нибудь может сказать мне, если? Или есть другой способ решить мою проблему?

Если что-то непонятно, на мой вопрос, не стесняйтесь спросить, и я попытаюсь прояснить эту проблему :)

Спасибо уже заранее за вашу помощь!

+1

Внимание ... 'если (MotionEvent.ACTION_UP = истина) {' не логическое сравнение –

+0

It должно быть: event.getAction() == KeyEvent.ACTION_UP –

+1

Я полагаю, вы спрашиваете, как обнаружить событие салфетки? –

ответ

0

«=» - это назначение, для сравнения значения «==».

о признании жеста, проверить https://developer.android.com/training/gestures/detector.html#detect и https://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; 
} 
+0

И никогда не пишите 'someBoolean == true' – Henry

+0

И могу ли я теперь использовать это, чтобы обнаружить swipemotion?И если да, то как я могу его обнаружить, а затем, например, для swipemotion UP, что он ставит «больше» в arraylist? – zutru

+0

при создании GestureDetectorCompat вы передаете слушателю жестов в качестве параметра (в моем примере это «это», вам нужно будет расширить GestureDetector.OnGestureListener), onFling будет вызываться всякий раз, когда пользователь перебирает палец вверх или вниз, вы может использовать speedY для определения направления выброса. – marmor

1

Когда вы пишете такой редактор оператора расскажет вам (Android студия надеется), что вы не можете сравните int с булевым. поскольку это тенденция, что ноль означает false, а 1 означает true, но в java вы не можете так поступать.

вы можете попробовать, как этот

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


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


     return false; 
    } 

    return false; 
} 

Надежда поможет в понимании ...

Смежные вопросы