找不到字符串

时间:2015-09-30 01:45:11

标签: java string

我只是搞乱代码,看看我能做什么以及我能做什么,所以我创建了一个非常简单的登录程序,由于某种原因,它可以&#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);
    }
}

无法找到字符串传递。我不知道它是否是一个保留字,但是当我尝试将字符串更改为密码而不是通过它时仍然无法找到它。任何帮助都会很好

3 个答案:

答案 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循环中,你试图在循环外访问它。变量范围仅在循环中