【发布时间】:2024-01-11 01:40:02
【问题描述】:
我正在尝试制作一个登录/密码程序,该程序会询问您是否有帐户,您也可以创建一个。
我的意思是程序会给你一个随机的 8 位数字。
我还有一个 FileWriter,它根据您提供的 ID 创建一个文件。我有一个 FileReader,它最终会读取您之前导出到文件中的内容,以便您更新它。
我遇到的问题是,当我询问用户是否已经有帐户时,如果他们说是,它会询问用户他们的用户 ID。
我的计划是,当它读取您的 UserID 时,它会扫描我保存 .java 文件的文件夹,并查找与您的 UserID 同名的 .txt 文件。例如,如果您创建一个帐户并且它给您的 UserID 是 12345678,它将创建一个名为 12345678 的文件,然后当您输入您的 UserID 时,它会扫描以查看该文件是否存在。
目前出现的问题是它打印出来
找不到错误文件(我写的catch字符串)
即使我在文件夹中有那个文件。
我认为我比较查看 UserID 是否与任何文件名匹配的方式有问题。
“登录”类。
import java.awt.*;
import hsa.Console;
import java.util.Random;
import java.io.*;
import java.io.File;
import java.io.FileWriter;
import java.io.FileReader;
import java.io.FileNotFoundException;
public class Login
{
static Console c;
static Login player1;
public static void main (String[] args)
{
player1 = new Login ();
player1.FileReaderTest (25756326);
//player1.Userlogin (); //I think it has something to do with this
} // main method
public void Userlogin (File input)
{
c = new Console ();
Random rand = new Random ();
c.println ("Hello do you have an account?");
String Q1 = c.readLine ();
Q1 = Q1.toUpperCase ();
if (Q1.equals ("YES"))
{
c.println ("Please input your User ID");
int login = c.readInt ();
if (String.valueOf(login).equals (input))//I think it has something to do with this
{
try
{
FileReader reader = new FileReader (input);
BufferedReader buf = new BufferedReader (reader);
String line1 = buf.readLine ();
String line2 = buf.readLine ();
buf.close ();
c.println (line1);
c.println (line2);
}
catch (FileNotFoundException e)
{
c.println ("Error File Not Found");
}
catch (Exception e)
{
c.println ("ERROR");
}
}
}
else if (Q1.equals ("NO"))
{
c.println ("Please enter your name ");
String name = c.readLine ();
int UserID = rand.nextInt (99999999);
c.println ("Your User ID is " + UserID);
player1.FileCreation (UserID);
player1.FileReaderTest (UserID);
}
while (!Q1.equals ("YES") && !Q1.equals ("NO")) //While Q1 != YES || NO
{
c.println ("Please Answer the question with Yes or No");
c.println ("Hello do you have an account?");
String Q2 = c.readLine ();
Q2 = Q2.toUpperCase ();
if (Q2.equals ("YES"))
{
c.println ("Ok lets start");
break;
}
else if (Q2.equals ("NO"))
{
c.println ("Please enter your name ");
String name = c.readLine ();
int UserID = rand.nextInt (89999999) + 10000000;
c.println ("Your User ID is " + UserID);
player1.FileCreation (UserID);
player1.FileReaderTest (UserID);
break;
}
} //While Q1 != YES || NO
} //Public void Main
public void FileReaderTest (int UserID)
{
File input = new File (String.valueOf (UserID));
player1.Userlogin (input);
try
{
FileReader reader = new FileReader (input);
BufferedReader buf = new BufferedReader (reader);
String line1 = buf.readLine ();
String line2 = buf.readLine ();
buf.close ();
c.println (line1);
c.println (line2);
}
catch (FileNotFoundException e)
{
c.println ("Error File Not Found");
}
catch (Exception e)
{
c.println ("ERROR");
}
}
public void FileCreation (int UserID)
{
try
{
Writer writer = new BufferedWriter (new OutputStreamWriter (new FileOutputStream (String.valueOf (UserID)), "utf-8"));
}
catch (IOException ex)
{
}
}
} // Login class
【问题讨论】:
-
如何比较字符串和文件?
-
我不知道这个
hsa.Console类在做什么。 -
你需要将其与文件名而不是文件进行比较
-
您是否尝试过制作配置文件?配置文件更易于阅读和比较。
-
@cricket_007 因为我们学校不想接触实际的 Java,所以我们使用 hsa 控制台,它基本上为我们制作了一个简单的 jframe。