2016-03-24 3 views
0

Я должен сгенерировать два случайных числа, а затем найти периметр прямоугольника с ними. Затем он позволяет пользователю вводить свой ответ в EditText, когда Пользователь вводит свой ответ в EditText. Существует кнопка отправки, так что когда пользователь нажимает на нее, она позволяет человеку узнать, правильный ли ответ или неправильный ответ. Это отображается как сообщение тоста. Проблема у меня есть, когда я нажмите кнопку отправки, всегда показывает говорит «Ответ неверен, даже если я ставлю в правильном значении в EditText. Оценила помощь. СпасибоПериметр в Android Studio

public class Perimeter extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_perimeter); 



     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 
    public void PerimeterGame(View view) { 
     Random rand = new Random(); 
     int number = rand.nextInt(12) + 1; 
     TextView myText = (TextView) findViewById(R.id.rand1); 
     String myString = String.valueOf(number); 
     myText.setText(myString); 


     Random rand2 = new Random(); 
     int number2 = rand2.nextInt(12) + 1; 
     TextView myText2 = (TextView) findViewById(R.id.rand2); 
     String myString2 = String.valueOf(number2); 
     myText2.setText(myString2); 

     ((TextView) findViewById(R.id.question)).setText 
       ("Find the perimeter of a rectange with a width of " + myString + "cm" + " and " + "length of " + myString2 + "cm" + "."); 
    } 
     public void AnswerCheck(View view){ 

      int perimeter; 

      Random randOne = new Random(); 
      int number = randOne.nextInt(12) + 1; 
      TextView myText = (TextView) findViewById(R.id.rand1); 
      String myString = String.valueOf(number); 
      myText.setText(myString); 


      Random randTwo = new Random(); 
      int number2 = randTwo.nextInt(12) + 1; 
      TextView myText2 = (TextView) findViewById(R.id.rand2); 
      String myString2 = String.valueOf(number2); 
      myText2.setText(myString2); 


      EditText num = (EditText)findViewById(R.id.answertext); 
      int val = Integer.parseInt(num.getText().toString()); 


      perimeter=(number+number2+number+number2); 

      if(val==perimeter){ 
       Toast.makeText(this, "The answer is correct", Toast.LENGTH_SHORT).show(); 

      } 
      else{ 

       Toast.makeText(this, "The answer is incorrect ", Toast.LENGTH_SHORT).show(); 
      } 




    } 

} 
+0

где вы назвали ваши методы? –

+0

Вы правильно отлаживали значения? –

+0

Я смущен, как 2 случайных числа образуют прямоугольник –

ответ

0

В AnswerCheck вам не нужно генерировать новые числа снова .. вам нужно получить старые сгенерированные числа в первом методе PerimeterGame() и сделать свою формулу с ними.

+0

как я могу получить старые сгенерированные числа? – TheOptimist

+0

просто сделайте это глобальными переменными и используйте его в двух методах, сначала создайте их, а во второй сделайте свою формулу –

+0

Спасибо, это помогло – TheOptimist

1

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

public class Perimeter extends AppCompatActivity { 

    private int number1, number2; 
    private Random rand; 

    onCreate() { 
     rand = new Random(); 
    } 

    PerimeterGame(View view) { 
     number1 = rand.nextInt(12) + 1; 
     number2 = rand.nextInt(12) + 1; 
    } 

    AnswerCheck(View view) { 
     // Don't make new random variables here, just check your inputs. 
     EditText num = (EditText)findViewById(R.id.answertext); 
     int val = Integer.parseInt(num.getText().toString()); 


     int perimeter= 2*(number + number2); 
     if (val == perimeter) { } 

    } 
} 
+0

Спасибо большое, я получил его на работу – TheOptimist