我只是搞乱代码,看看我能做什么以及我能做什么,所以我创建了一个非常简单的登录程序,由于某种原因,它可以&#39 ; t似乎找到了其中一个字符串。这是代码:
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Username: ");
String user = input.next();
System.out.print('\f');
while (true) {
System.out.print("Pass: ");
String pass = input.next();
System.out.print('\f');
System.out.print("Password Again: ");
String pass2 = input.next();
System.out.print('\f');
if (pass.equals(pass2)) {
System.out.println("*Passwords Match*");
System.out.println("");
break;
} else if (!pass.equals(pass2)) {
System.out.println("*Passwords don't match, please try again*");
System.out.println("");
}
}
System.out.println("User: " + user);
System.out.println("Pass: " + pass);
}
}
无法找到字符串传递。我不知道它是否是一个保留字,但是当我尝试将字符串更改为密码而不是通过它时仍然无法找到它。任何帮助都会很好
答案 0 :(得分:2)
您在可以使用的地方之外使用pass
。
如果您在main方法中声明它,您的代码将起作用。
基本上,在while
循环范围之外使用的任何东西都必须在某处初始化。如上所述,您不必担心pass2
在其他地方被声明,因为它的主要功能完全在循环范围内
import java.util.Scanner;
public class Login {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String pass,user;
System.out.print("Username: ");
user = input.next();
System.out.print('\f');
while (true) {
System.out.print("Pass: ");
pass = input.next();
System.out.print('\f');
System.out.print("Password Again: ");
String pass2 = input.next();
System.out.print('\f');
if (pass.equals(pass2)) {
System.out.println("*Passwords Match*");
System.out.println("");
break;
} else if (!pass.equals(pass2)) {
System.out.println("*Passwords don't match, please try again*");
System.out.println("");
}
}
System.out.println("User: " + user);
System.out.println("Pass: " + pass);
}
}
答案 1 :(得分:1)
您正在尝试在其定义的范围之外使用变量pass
。也就是说,它是在while
循环中定义的,并且您试图在循环之外使用它。这将为您提供编译时错误,因为它是无效代码。
将此与在循环外定义的user
变量(即之前)进行比较,因此可以在它之后使用。
我将pass
的定义移到user
的定义之后。那应该可以解决你的问题。 (pass2
的定义可以保持在循环内。)
答案 2 :(得分:1)
你的变量Dispatched
在while循环中,你试图在循环外访问它。变量范围仅在循环中