【发布时间】:2011-12-17 11:05:51
【问题描述】:
我想要帮助自己,我制作了一个可以创建用户文件的文件,因为我打算制作一个游戏。它有一个登录名,其中包含登录名、显示名和密码。它将其写入以登录名命名的文件。
现在我也想用 java 制作一个登录脚本。我想知道,具体来说,如何读取该行和已经输入的密码。
我有它,这样当它创建文件时,它会保存密码两次,一次作为“playerPass”,一次作为“currPass”,这样,如果有人计划更改密码(我将从登录脚本中使用) ),然后使用 playerPass 变量将 currPass 读取为正确的密码。无论如何,我希望它使用 BufferedReader 和 FileReader 读取指示密码的行和当前密码,以便可以登录。
有人可以帮我解决这个问题吗?在某种程度上,我仍然是新手。
PS。我可以调整代码,我只需要稍微解释一下如何编写代码即可。
变量:
playerLogName
playerName
playerPass
currPass
文件名:
Login.java
CharacterFileCreator.java
做了一个补充,让它工作了一半,但在我输入密码后它会锁定(使用 Dr. Java),无论我做什么,不正确或正确,并且 System.out.println() 永远不会即使密码不正确也会执行。检查一下:
import java.util.Scanner;
import java.io.BufferedWriter;
import java.io.BufferedReader;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.IOException;
import java.io.FileNotFoundException;
class Login {
public static void LogIn(){
boolean loggedIn = false;
loggedIn = true;
System.out.println("You are now logged in!");
}
public static void main(String[] args) {
System.out.println("What is your login name?");
Scanner charLogName = new Scanner(System.in);
String playerLogName = charLogName.nextLine();
boolean charFileFound = false;
BufferedReader characterfile = null;
try {
characterfile = new BufferedReader(new FileReader("./game/characters/" + playerLogName + ".txt"));
charFileFound = true;
}
catch (FileNotFoundException fileex1) {}
if(charFileFound == false){
System.out.println("Login name does not exist!");
}
else
{
System.out.println(playerLogName + ": is your username, what is your password?");
Scanner charPassword = new Scanner(System.in);
String playerPass = charPassword.nextLine();
String line = "";
String token = "";
String token2 = "";
int ReadMode = 0;
try {
line = characterfile.readLine();
} catch (IOException ioexception) {
System.out.println(playerLogName + ": error loading file.");
}
while (line != null) {
line = line.trim();
int spot = line.indexOf("=");
if (spot > -1) {
token = line.substring(0, spot);
token = token.trim();
token2 = line.substring(spot + 1);
token2 = token2.trim();
switch (ReadMode) {
case 1:
if (token.equals("character-password")) {
if (playerPass.equals(token2)) {
LogIn();
} else {
System.out.println("You entered an incorrect password!");
}
break;
}
}
} else {
if(line.equals("[ACCOUNT]")) {
ReadMode = 1;
}
else if(line.equals("[EOF]")) {
try {
characterfile.close();
} catch (IOException ioexception) {
}
}
}
}
}
}
}
编辑:
示例文件:
[ACCOUNT]
character-loginname = SampleFile
character-password = samplepassword
[EOF]
【问题讨论】:
-
在您的问题中显示示例文件。
-
“对不起,这里是凌晨 4:15,哈哈。” 这不是一个正当的借口。如果你不得不为一个糟糕的问题找借口,这是一个很好的迹象,表明你不应该问这个问题,或者应该推迟问这个问题,直到你适合这样做。 -1
-
我 17 岁,我还是个孩子,我有一个很好的“借口”,而那个“借口”是为了我的“脑屁”!没有别的,我是新手,我需要帮助,问问题的目的是寻求帮助,如果你不知道什么,你不知道,我一直在寻找修复,好吧,一些几个小时,但我不会坐 12 个小时来寻找如何解决这样的问题。 ** 是的,连续 34 小时起床是一个正当的借口,非常感谢。
-
@Mauricio,我相信我展示的信息已经足够了 >.>,我相信大多数人都会同意我的观点。
-
@Daniel 老实说,我比你年轻,我也不认为这是一个好的借口。我也只用 Java 编程了大约 6 个月。连续 34 小时起床也可能是一个促成因素 - 你和任何人一样,显然无法思考,因此,你可能会忽略/错过程序中的一个简单错误,并在你没有的时候提出问题专注。在“brainfart”之前,您肯定会想到“pass”之类的东西吗?争论也不好,安德鲁和毛里西奥正在提出有效的观点并试图在你聪明的同时提供帮助!
标签: java login bufferedreader bufferedwriter