我改变了主意使用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的元素不同,则该过程将被停止。 我真的不知道这是否有效,所以有人可能会告诉我,是否可以? 或者还有其他方法可以解决我的问题吗?
如果我的问题中有任何不明确的地方,请随时提出,我会尽力澄清问题:)
提前感谢您的帮助!
答案 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#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;
}