就是无论注册还是登陆都会抛出红色部分的异常,注册成功后,说注册成功。登陆的时候却抛出异常,到底哪里出错了啊?
//先导入所需要的包。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
class login
{
public login(){};
public static void main(String args[])
{
ArrayList arr=new ArrayList();//----------------------------------------声明了一个ArrayList类的一个对象。
//System.out.println("1、注册  2、登陆");//-------------------------------提示用户
try//-------------------------------------------------------------------捕获异常
{
FileReader dq=new FileReader("SQL Server.txt");//-------------------读取记事本里面的文字。
BufferedReader bdq=new BufferedReader(dq);//------------------------把读取到的文字放入到缓冲区。
String s=bdq.readLine();//------------------------------------------把缓存区的文字一个一个的读取,并转换成字符串。
while(s!=null)//----------------------------------------------------如果S的东西为空,也就是读取的记事本中的文字为空,则不进行循环。
{
String scf[]=s.split(",");//-----------------------------------将字符串只要有空格的地方都进行拆分,并且以|为拆分符号。
String s1=scf[1],s2=scf[2];//-----------------------------------按照习惯,用户名在前,密码在后即scf[1]中为用户名。scf[2]中为密码。
user u=new user(s1,s2);//---------------------------------------将s1和s2这两个字符串,传参到user类中即String x和String y。
arr.add(u);
}
dq.close();
bdq.close();
}
catch(IOException e1)
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t数据库SQL Server.txt文件不存在!\n\t\t\tFile (SQL Server.txt) Not Found!");
System.out.println("\n--------------------------------------------------------------------------------\n");
}
/*catch(Exception e2)
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t数据库SQL Server.txt文件不存在!\n\t\t\tFile (SQL Server.txt) Not Found!!!");
System.out.println("\n--------------------------------------------------------------------------------\n");
}*/
catch(Exception e)
{
System.out.println("错误(main)!");
}

if(args[0].equals("1"))
{
zhuce z=new zhuce();
z.zhuce(arr,args[1],args[2]);
}
if(args[0].equals("2"))
{
denglu d=new denglu();
d.denglu(arr,args[1],args[2]);
}
}
}
class zhuce
{
public zhuce(){}
public void zhuce(ArrayList arr,String x,String y)
{
user u=new user(x,y);
arr.add(u);
int size2=arr.size();
try
{
FileWriter xr=new FileWriter("SQL Server.txt",true);
BufferedWriter bxr=new BufferedWriter(xr);
bxr.write(x+","+y);
bxr.newLine();
bxr.flush();
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t\t注册成功!");
System.out.println("\n--------------------------------------------------------------------------------\n");
bxr.close();
}
catch(IOException e1)
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t数据库SQL Server.txt文件不存在!\n\t\t\tFile (SQL Server.txt) Not Found!");
System.out.println("\n--------------------------------------------------------------------------------\n");
}
catch(Exception e2)
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t数据库SQL Server.txt文件不存在!\n\t\t\tFile (SQL Server.txt) Not Found!!");
System.out.println("\n--------------------------------------------------------------------------------\n");
}
}
}
class denglu
{
public denglu(){}
public void denglu(ArrayList arr,String x,String y)
{
int size2=arr.size();
user temp;
for(int i=1;i<size2;i++)
{
temp=(user)arr.get(i);
if(temp.name.equals(x)&temp.password.equals(y))
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t\t登陆成功!欢迎"+x+"的到来");
System.out.println("\n--------------------------------------------------------------------------------\n");
break;
}
else
{
System.out.println("\n--------------------------------------------------------------------------------\n");
System.out.println("\t\t\t\t登录失败,请认真核对用户名/密码");
System.out.println("\n--------------------------------------------------------------------------------\n");
}
}
}
}
class user
{
String name;
String password;
public user(String x,String y)
{
name=x;
password=y;
}
}

解决方案 »

  1.   

     catch(Exception   e)
    {
      ex.printStackTrace(); // 你为何不把错误打印出来,你就清楚了!
    System.out.println("错误(main)!");
      

  2.   

    还是打印我错误信息吧
    要不查找起来太费力了
    catch(Exception   e)
    {
      e.printStackTrace(); // 打印错误信息!
    System.out.println("错误(main)!");

      

  3.   

    String   s=bdq.readLine();//------------------------------------------把缓存区的文字一个一个的读取,并转换成字符串。 
    while(s!=null)//----------------------------------------------------如果S的东西为空,也就是读取的记事本中的文字为空,则不进行循环。 

    String   scf[]=s.split(",");//-----------------------------------将字符串只要有空格的地方都进行拆分,并且以 ¦为拆分符号。 
    String   s1=scf[1],s2=scf[2];//-----------------------------------按照习惯,用户名在前,密码在后即scf[1]中为用户名。scf[2]中为密码。 
    user   u=new   user(s1,s2);//---------------------------------------将s1和s2这两个字符串,传参到user类中即String   x和String   y。 
    arr.add(u); 

    这段肯定错了(具体那里自己看)
    让你体会下你给我们的感觉
      

  4.   

    s=bdq.readLine();这句也要加入while()循环中,否则会无限循环的
      

  5.   

    to 楼主:增加程式的可读性,比写再多的注释更重要
    我改了一下您的程式,希望能对您有所启发!
    当然,您的程式中有些地方是bug存在的,我没有去改动...import java.io.*;
    import java.util.ArrayList;public class Login {
        private void printTip(){
            //register or login tips
            System.out.println("1、注冊     2、登錄");
        }
        private void getUserInfomation(ArrayList arr) {
            try {
                FileReader dq = null;
                dq = new FileReader("c:/SQL   Server.txt"); 
                BufferedReader bdq = new BufferedReader(dq); 
                String s = bdq.readLine(); 
                while (s != null) { 
                    String scf[] = s.split(","); 
                    String userName = scf[0], passWord = scf[1];
                    User u = new User(userName, passWord); 
                    arr.add(u);
                    s = bdq.readLine();
                }
                dq.close();
                bdq.close();
            } catch (FileNotFoundException ex) {
                HandleInformation.printFileNotFoundException();
            } catch (IOException e1) {
            }
        }
        public static void main(String args[]) {
            Login log=new Login();
            ArrayList arr = new ArrayList();
            log.printTip();
            log.getUserInfomation(arr);
            
            LoginOrRegisterInfo logInfo=new LoginOrRegisterInfo(args[0],args[1],args[2]);
            logInfo.action(arr);
        }
    }
    class LoginOrRegisterInfo {
        private String actionType;
        private User user;
        private static final String REGISTER_TYPE = "1";
        private static final String LOGIN_TYPE = "2";
        LoginOrRegisterInfo(String actionType, String userNm, String password) {
            this.actionType = actionType;
            user=new User(userNm,password);
        }    private void doRegister(ArrayList arr) {
            zhuce z = new zhuce();
            z.zhuce(arr, user);
        }    private void doLogin(ArrayList arr) {
            denglu d = new denglu();
            d.denglu(arr, user);
        }    void action(ArrayList arr) {
            if (actionType.equals(LoginOrRegisterInfo.REGISTER_TYPE)) {
                doRegister(arr);
            } else if (actionType.equals(LoginOrRegisterInfo.LOGIN_TYPE)) {
                doLogin(arr);
            }
        }
    }
    class HandleInformation{
         static void printFileNotFoundException() {
            System.out.println("\n--------------------------------------------------------------------------------\n");
            System.out.println("\t\t\t\u6570据\u5E93SQL   Server.txt文件不存在!\n\t\t\tFile   (SQL   Server.txt)   Not   Found!");
            System.out.println("\n--------------------------------------------------------------------------------\n");
        }     static void printRegisterSuccessInfo() {
            System.out.println("\n--------------------------------------------------------------------------------\n");
            System.out.println("\t\t\t\t注\u518C成功!");
            System.out.println("\n--------------------------------------------------------------------------------\n");
        }    static void printLoginSuccessInfo(String userName) {
            System.out.println("\n--------------------------------------------------------------------------------\n");
            System.out.println("\t\t\t\t登\u9646成功!\u6B22迎" + userName + "的到\u6765");
            System.out.println("\n--------------------------------------------------------------------------------\n");
        }    static void printLoginFailureInfo() {
            System.out.println("\n--------------------------------------------------------------------------------\n");
            System.out.println(
                    "\t\t\t\t登\u5F55失\u8D25,\u8BF7\u8BA4真核\u5BF9用\u6237名/密\u7801");
            System.out.println("\n--------------------------------------------------------------------------------\n");
        }
    }
    class zhuce {
        public void zhuce(ArrayList arr, User user) {
            arr.add(user);
            try {
                FileWriter xr = new FileWriter("c:/SQL   Server.txt", true);
                BufferedWriter bxr = new BufferedWriter(xr);
                bxr.write(user.name + "," + user.name);
                bxr.newLine();
                bxr.flush();
                bxr.close();
                HandleInformation.printRegisterSuccessInfo();
            } catch (FileNotFoundException e1) {
                HandleInformation.printFileNotFoundException();
            } catch (IOException ex) {
                /** @todo Handle this exception */
            }    }
    }
    class denglu {
        public void denglu(ArrayList arr, User user) {
            int size2 = arr.size();
            for (int i = 1; i < size2; i++) {
                User user_tmp = (User) arr.get(i);
                if (user_tmp.name.equals(user.name) && user_tmp.password.equals(user.password)) {
                    HandleInformation.printLoginSuccessInfo(user.name);
                } else {
                    HandleInformation.printLoginFailureInfo();
                }
            }
        }
    }
    class User {
        String name;
        String password;
        public User(String userNm, String pwd) {
            name = userNm;
            password = pwd;
        }
    }