Когда я передаю одну строку из одного java-класса в другой, по умолчанию принимается нулевое значение, почему это происходит? - PullRequest
0 голосов
/ 26 февраля 2019

FORGOT.JAVA здесь я создал случайное число и преобразовал его в строку

Random rand=new Random();
int id=rand.nextInt(10000);
System.out.printf("%04d%n",id);
final String ki=Integer.toString(id);
System.out.printf(ki);

OTP.JAVA здесь я использовал это случайное число, чтобы сравнить его с пользовательским вводом ... но значениеисходящий из Forgot.Java является нулевым, почему он является нулевым ???

1 Ответ

0 голосов
/ 26 февраля 2019

Похоже, проблема с областью.Фрагмент кода, который вы разместили на FORGOT.JAVA, недостаточно для точного определения проблемы.Но вы определяете переменную ki во фрагменте.Поэтому он не будет доступен вне метода / конструктора, из которого происходит фрагмент кода.

Глядя на второй фрагмент из OPT.JAVA, вы создаете новый FORGOT, а затем ссылаетесь на поле с именем ki.Поэтому для компиляции у вас, вероятно, есть что-то вроде следующего для класса FORGOT:

public class FORGOT {

    public String ki;

    public FORGOT() {
        Random rand=new Random();
        int id=rand.nextInt(10000);
        System.out.printf("%04d%n",id);
        final String ki=Integer.toString(id);
        System.out.printf(ki);
    }
}

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

Чтобы установить общедоступную переменную ki, просто удалите бит final String с того места, где вы установили ki.

то есть

public class FORGOT {

    public String ki;

    public FORGOT() {
        Random rand=new Random();
        int id=rand.nextInt(10000);
        System.out.printf("%04d%n",id);
        ki=Integer.toString(id);
        System.out.printf(ki);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...