У меня есть одна переменная, но Java считает их двумя - PullRequest
0 голосов
/ 02 октября 2019

Я инициировал переменную 'answer' в ближайшем заголовке класса. Позже, когда случайное число в пределах введенного диапазона было сгенерировано, эта же переменная получает новое другое значение (из-за генератора случайных чисел). Но, как вы можете видеть, переменная 'answer' указывается в двух разных цветах (синий против светло-коричневого), и, как вы ожидаете, мои подпрограммы, следовательно, не работают. Почему-то ответ не равен ответу. Что я сделал неправильно ???? (к сожалению, здесь вы не видите разницы в цветах).

  • В затмении цвет «ответа» в самом верху static int answer = 0; - СИНИЙ.
  • Но один int answer = ThreadLocalRandom.current().nextInt(1, userinput); - СЕРЫЙ

Вот мой код:

package Package1;

import java.util.concurrent.ThreadLocalRandom;
import java.util.Scanner;



public class test6KOPIE

{

    static int numberofattempts = 0;
    static int maxnummerofattemptsallowed = 5;
    static int answer = 0;


        public static void main(String[] args)
        {



            if (answer == 0)
            {


                Scanner maxinput = new Scanner(System.in);


                System.out.println("Under which number do you want to guess");


                int userinput = maxinput.nextInt();

                int answer = ThreadLocalRandom.current().nextInt(1, userinput);


                System.out.println(answer);

                main(args);                     
            }

            else if (numberofattempts < maxnummerofattemptsallowed)
               {


                    Scanner higherlower = new Scanner(System.in);

                    System.out.println("Higher or Lower");

                    int digit = higherlower.nextInt();


                    if  (answer == digit)
                        {
                        System.out.println("very well");
                        }

                    else    {
                            if (answer > digit ) 
                                {
                                ++numberofattempts;
                                System.out.println("Higher, you have " +(maxnummerofattemptsallowed - numberofattempts)+" attempt(s) left)");
                                System.out.println(numberofattempts);
                                main(args);
                                }

                            else
                                {
                                ++numberofattempts;
                                System.out.println("Lower, you have " +(maxnummerofattemptsallowed - numberofattempts)+" attempt(s) left)");
                                main(args);
                                }

                            }


                    higherlower.close();    
               }

                else    {
                        System.out.println("Maximum number of attempts used, the answer was" +answer);
                        }


        }   

1 Ответ

0 голосов
/ 02 октября 2019

Это потому, что вы переинициализируете переменную answer, набирая int перед ней. Если вы просто хотите переназначить значение, строка должна выглядеть так:

answer=ThreadLocalRandom.current().nextInt(1, userinput);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...