Java

Java ,java,file-io,Java,File Io,感谢所有回复者。最后,问题是我有一个“草稿”java类,然后我将的代码复制并粘贴到同一java项目下的一个新java类中,这似乎给了我一些问题。一旦我创建了一个新的java项目并使用了有效的java类,它就工作得很好。我还添加了pw.flush();方法添加到我的代码中,以便我能够立即附加到文件中,而不是在关闭时。还删除了system.exit。我通过进入调试模式并检查这一行找到了它:recUserID=scannerDat.next();recUserID是“aabbcc-11\nOnetwo

感谢所有回复者。最后,问题是我有一个“草稿”java类,然后我将的代码复制并粘贴到同一java项目下的一个新java类中,这似乎给了我一些问题。一旦我创建了一个新的java项目并使用了有效的java类,它就工作得很好。我还添加了pw.flush();方法添加到我的代码中,以便我能够立即附加到文件中,而不是在关闭时。还删除了system.exit。

我通过进入调试模式并检查这一行找到了它:recUserID=scannerDat.next();recUserID是“aabbcc-11\nOnetwo3\naaabbb-22\nOnetwo34”,感谢您的快速反馈。如何冲洗打印机?你能解释一下我是如何关闭溪流的吗?我会在哪里这样做。抱歉,就像我说的,java新手:)
import java.io.*;
import java.util.*;

/**
 * This program will utilize a menu structure and validate input if the user doesn't choose
 * a correct option. Writes a new ID and password to .dat file when user chooses to 
 * create new user from menu.
 * 
 * @author CMS
 * @Date 7/28/2014
 */
public class Passwordv2 {
static boolean answer = true;
static final String MENUANSW = "[1-3]{1}", USERID = "[A-Z,a-z]{6}-[0-9]{2}"; //, PASSWORD = "";
static String iMenuOption="", iID, recPassword, recUserID, password;
static Scanner scanner,scannerDat;
static PrintWriter pw;

public static void main(String[] args) {

    init();
    while (answer == true) {
        menu();
        if (iMenuOption.equals("1")) createUser();
        else 
            if (iMenuOption.equals("2")) signIn();
            else {answer = false;}

        }
    closing();

} // end of main

public static void init(){

//User input scanner
    scanner = new Scanner(System.in);
//PrintWriter
    try {
        pw = new PrintWriter(new FileOutputStream (new File ("account.dat"),true) );
    }
    catch(FileNotFoundException ex) {
    }
} // end of INIT

public static String menu(){

    do {System.out.println("Please select from the following:");
        System.out.println("1. Create a New User");
        System.out.println("2. Sign in");
        System.out.println("3. Exit");
        iMenuOption = scanner.next();
        answer = isValMenuOption(iMenuOption);
        if (answer == false) { System.out.print("Incorrect Choice. ");}
    } while (!answer);
    return iMenuOption;

}

public static boolean isValMenuOption(String iMenuOption) {
    return(iMenuOption.matches(MENUANSW));

}
public static void createUser() {
    boolean validID = true, newID = true;
    do {if (!validID) {System.out.println("User ID did not meet requirements.");}
        if (!newID) {System.out.println("This User ID has been taken.");}
        System.out.println("Please select a User Id (6 letters, followed by a dash (-), followed by 2 numbers).");
        iID = scanner.next();
        validID = isValidID(iID);
        newID = isNewID(iID);}
    while (validID==false || newID == false);

    boolean valLength = true, valNum = true, valUpper = true, valLower = true;
    do{ System.out.println("Please select a Password:");
        System.out.println("(6-12 characters, one number, one upper case, one lower case, no white space or symbols).");
        password = scanner.next();
        valLength = isValLength(password);
        valNum = valNum(password);
        valUpper = valUpper(password);
        valLower = valLower(password);}
    while (!valLength || !valNum || !valUpper || !valLower);
    pw.println(iID);
    pw.println(password);
    //menu();
}

public static boolean isValidID(String iID){
    return(iID.matches(USERID));
}

public static boolean isNewID(String iID){

    answer = true;
    // Dat file scanner
    try {
        scannerDat = new Scanner(new File("account.dat"));
        scannerDat.useDelimiter("\r\n");
    }

    catch (Exception e) {
        e.printStackTrace();
        System.out.println("File error");
        System.exit(1);
    }

    while (scannerDat.hasNext()) {
        recUserID = scannerDat.next();
        recPassword = scannerDat.next();
        if (recUserID.equals(iID)) {
            answer = false;
            break;

        }
    }
    return answer; 
}

public static boolean isValLength(String password) {
    if (password.length()  <6 || password.length() > 12) System.out.println("Password did not meet length requirements. ");
    return(password.length() >= 6 && password.length() <= 12);

}

public static boolean valNum(String password) {
    if (password.matches(".*[0-9].*") == false) System.out.println("Password must contain at least one number. ");
    return(password.matches(".*[0-9].*"));
}

public static boolean valUpper(String password){
    if (password.matches(".*[A-Z].*") == false) System.out.println("Password must contain one upper case letter.");
    return (password.matches(".*[A-Z].*")); 

}

public static boolean valLower(String password){
    if (password.matches(".*[a-z].*") == false) System.out.println("Password must contain one lower case letter.");
    return (password.matches(".*[a-z].*")); 
}

public static void signIn() {
    boolean newID;
    System.out.println("Enter User ID.");
    iID = scanner.next();
    System.out.println("Enter Password.");
    password = scanner.next();
    newID = isNewID(iID);
    if (newID == false) {
        if (password.equals(recPassword)) {System.out.println("Authenticated. You have signed in.");}
        else {System.out.println("Invalid Password.");}
    }
    else {System.out.println("Invalid User ID.");}      
}

public static void closing(){
    System.out.println("You signed out.");
    pw.close();
}
} // end of program
scannerDat.useDelimiter("\r\n");
scannerDat.useDelimiter("\n");