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的值为null为什么它是null?
forgot ff=new forgot();
String s=ff.ki;
System.out.print(s);
if (o.compareTo(s) > 0)
System.out.println("Strings are'nt same");
else if (o.compareTo(s) < 0)
System.out.println("The first string is smaller than the second.");
else
System.out.println("Both the strings are equal.");
//int ch=ff.ki;
}
}
它看起来像是范围问题。您从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,只需从设置ki的位置删除final String
位。
即
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);
}
}