Jede Hilfe oder Beratung würde sehr geschätzt werden. Ich drehe ein einfaches Spiel, das zehn verschiedene, zufällige Fragen erzeugt. Die Fragen können aus 2, 3 oder 4 ganzen Zahlen zusammengesetzt sein. Etwas wie dieses: 552 − 4 − 101
, 102/3/3
, 589 − 281
, 123 + 56 + 2
.Wie berechne ich den Wert des mathematischen Ausdrucks und überprüfe die Benutzerantwort?
Die Frage wird in einer Textansicht angezeigt und dann kann der Benutzer raten, Werte in einen Bearbeitungstext eingeben und nach dem Klicken auf eine Taste auf einer benutzerdefinierten Tastatur die Antwort prüfen und dann die nächste Frage bis anzeigen es erreicht 10 Fragen. Ich habe ein Problem mit der Eingabe der Antwort aus dem Code, den ich habe. Egal, was ich hier mache, ich kann die Antwort auf den zufällig generierten Ausdruck nicht eingeben.
public enum Operator {
PLUS("+"), MINUS("-"), MULTIPLIER("*"), DIVIDER("/");
private String displayValue;
private Operator(String displayValue) {
this.displayValue = displayValue;
}
public String getDisplayValue() {
return displayValue;
}}
public class Question{
private List<QuestionElement> questionElements;
public Question(int sizeOfQuestionElemets) {
questionElements = new ArrayList<QuestionElement>(sizeOfQuestionElemets);
}
public void addElement(QuestionElement questionElement) {
questionElements.add(questionElement);
}
public List<QuestionElement> getElements() {
return questionElements;
}
public int size() {
return questionElements.size();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (QuestionElement questionElement : questionElements) {
sb.append(questionElement);
}
return sb.toString().trim();
}
}
public class QuestionElement {
private int value;
private Operator operator;
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public Operator getOperator() {
return operator;
}
public void setOperator(Operator operator) {
this.operator = operator;
}
@Override
public String toString() {
return value + (operator == null ? "" : " " + operator.getDisplayValue()) + " ";
}
}
public class RandomQuestions {
static QuestionElement q = new QuestionElement();
private static final int NUMBER_OF_QUESTIONS = 10;
private static final int MIN_QUESTION_ELEMENTS = 2;
private static final int MAX_QUESTION_ELEMENTS = 2;
private static final int MIN_QUESTION_ELEMENT_VALUE = 1;
private static final int MAX_QUESTION_ELEMENT_VALUE = 20;
private final Random randomGenerator = new Random();
public List<Question> getGeneratedRandomQuestions() {
List<Question> randomQuestions = new ArrayList<>(NUMBER_OF_QUESTIONS);
int randomQuestionElementsCapacity = getRandomQuestionElementsCapacity();
Question question = new Question(randomQuestionElementsCapacity);
for (int j = 0; j < randomQuestionElementsCapacity; j++) {
boolean isLastIteration = j + 1 == randomQuestionElementsCapacity;
QuestionElement questionElement = new QuestionElement();
questionElement.setValue(getRandomQuestionElementValue());
questionElement.setOperator(isLastIteration ? null
: Operator.values()[randomGenerator.nextInt(Operator.values().length)]);
question.addElement(questionElement);
}
randomQuestions.add(question);
return randomQuestions;
}
private int getRandomQuestionElementsCapacity() {
return getRandomIntegerFromRange(MIN_QUESTION_ELEMENTS, MAX_QUESTION_ELEMENTS);
}
private int getRandomQuestionElementValue() {
return getRandomIntegerFromRange(MIN_QUESTION_ELEMENT_VALUE, MAX_QUESTION_ELEMENT_VALUE);
}
private int getRandomIntegerFromRange(int min, int max) {
return randomGenerator.nextInt(max - min + 1) + min;
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
RandomQuestions questionGenerator = new RandomQuestions();
List<Question> randomQuestions = questionGenerator.getGeneratedRandomQuestions();
for (Question question : randomQuestions) {
System.out.println(""+ question+"=?");
int answer = input.nextInt();
if (answer == q.getValue()) {
System.out.println("CORRECT");
}else{
System.err.println("STILL NOT WORKING");
}
}
}
}
Wenn Sie das nächste Mal eine Frage stellen, versuchen Sie bitte, Ihr Problem besser und genauer zu erklären, damit die Leser nicht viel Code durchlesen müssen und selbst herausfinden, was Sie bereits wissen, wie es nicht funktioniert. Siehe [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask). Und erwarten Sie im Allgemeinen, dass wir Ihre Fragen beantworten und nicht Ihren Code für Sie schreiben. Ich hoffe, Sie zu sehen. –