2012-02-27 3 views
0

Что было бы лучшим способом получить ответ на этот вопрос, который использует случайные числа и случайные операторы.Android - вычисление и сохранение ответа арифметического выражения

editTextEquation.setText(random1 +(String.valueOf(ops[i1]) + random2 +  (String.valueOf(ops[i2])+ random3 + (String.valueOf(ops[i3])+ random4)))); 

Я показываю этот вопрос, а затем проверю ответ на ввод пользователя. Я предполагаю, что мне нужно сначала сохранить ответ. Любая помощь/совет будут очень оценены.

Вот как я генерируя выражение:

int random1 = (int)(Math.random()*100); 
int random2 = (int)(Math.random()*100); 
int random3 = (int)(Math.random()*200); 
int random4 = (int)(Math.random()*20); 

int min = 0; 
int max = 3; 
Random r = new Random(); 
int i1 = r.nextInt(max - min); 
int i2 = r.nextInt(max - min); 
int i3 = r.nextInt(max - min); 

char[] ops = { '+', '-', '/', '*' }; 

int answer; 
+1

Похоже, вы храните операнды в виде строк, считаете ли вы их хранение как «int/double», что должно сдвинуть часть логики получения значений, а значит, вы можете просто вычислить ответ каждый раз –

+0

Не могли бы вы точнее, и дайте больше примеров – Snicolas

+0

@ dann.dev, как бы я это сделал? просто измените char на int? а затем настроить код setText? – Abs90

ответ

1

Как долго вы должны держать на ответ?

Если это будет только на короткое время, переменной будет достаточно.

Если вам это нужно в течение длительного времени, подумайте о создании базы данных SQLite для ее хранения. Создайте идентификатор для своего выражения и сохраните их как в базе данных. Затем вы можете посмотреть их позже на досуге.

+0

Как я могу вычислить ответ с помощью переменной? – Abs90

+0

Создайте класс 'Expression', который инкапсулирует строку выражения, которую ваш пользователь ищет и дает член' solution'. Тогда у вас есть ответ, если у вас также есть «Выражение». Что касается расчета ответа, я полагаю, я предположил, что у вас уже была эта часть, разобранная, так как вы, похоже, больше заинтересовались ее хранением. – Argyle

0

Если у вас есть только небольшие проблемы, поэтому только пару + и - и т.д., вы можете попробовать создать строку, чтобы представить его, и основная работа, чтобы найти ответ, например

public int calculate(int operation, int a, int b, int c) { 
    if (operation ==1) { 
     //must be all plus 
     return a+b+c; 
    }else if (operation ==2) 
     //another case 
     return a+b-c; 
    }else if (etc etc 

} 

public void displayQuestion(int operation, int a, int b, int c) { 
    if(operation ==1) { 
     System.out.println(a + " + " + b + " + " + c + " ="); 
    }else if(etc etc 
} 

Вы затем может отображать каждый вопрос и запрашивать ответ в зависимости от того, что это было. Это простой способ, который потребует от вас указания каждого случая. Вероятно, вы легко можете сделать это намного умнее, это быстрый простой способ сделать это правильно (разбор строки в виде математического запроса) немного сложнее, и мне нужно вернуться к моей реальной работе!

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