Java 为什么我的Telnet程序的一部分会抛出一个关于错位的错误';}';?

Java 为什么我的Telnet程序的一部分会抛出一个关于错位的错误';}';?,java,telnet,Java,Telnet,我使用的是BBEdit,它似乎认为如果语句不匹配,那么放在“hello”| |“hi”后面的每个“}”都是不匹配的,这显然是不正确的。终端也会这样想,因为它抛出了一个关于“尝试”而没有“捕获”的错误。我想知道是否有人有同样的问题和/或知道解决方案 提前谢谢 class client_handler extends Thread { private Socket conn; client_handler(Socket conn) { this.conn = conn

我使用的是BBEdit,它似乎认为如果语句不匹配,那么放在“hello”| |“hi”后面的每个“}”都是不匹配的,这显然是不正确的。终端也会这样想,因为它抛出了一个关于“尝试”而没有“捕获”的错误。我想知道是否有人有同样的问题和/或知道解决方案

提前谢谢

class client_handler extends Thread {
    private Socket conn;
    client_handler(Socket conn) {
        this.conn = conn;
    }
    public void run() {
        String line, input="";

        String username;
        String password;
        String UID;

        Map<String, String> database_UID = new HashMap<String, String>();
        database_UID.put("admin", "1234");

        try {
            //Fetches the socket reading and writing streams
            DataInputStream in = new DataInputStream(conn.getInputStream());
            PrintStream out = new PrintStream(conn.getOutputStream());

            //Sends a welcome message to new client
            out.println("Welcome to the server\nType your username and password like:\nUsername_Password");

            //Begins to read input from the client
            while((line = in.readLine()) != null && !line.equals(".")) {
                //The server replies with the same message
                if(line.equalsIgnoreCase("server_quit")) {
                    //Tells the server the command was given
                    System.out.println("Given command 'server_quit', closing client connection at "+conn.getPort());
                    //Tells the user that the server is closing
                    out.println("Quitting the server...\nHave a nice day!");
                    conn.close();
                }
                if(line.equals("admin_"+database_UID.get("admin") {
                    out.println("Welcome back, Admin!");
                }
                if(line.equalsIgnoreCase("hello") || line.equalsIgnoreCase("hi")) {
                    out.println("Good day!");
                }
            }
            System.out.println("Client terminated at "+conn.getPort());
            conn.close();
        }
        catch(IOException e) {
            System.out.println("IOException on socket: "+e);
            e.printStackTrace();
    }
}
类客户端\u处理程序扩展线程{
专用插座连接器;
客户端处理程序(套接字连接){
this.conn=conn;
}
公开募捐{
字符串行,输入=”;
字符串用户名;
字符串密码;
字符串UID;
映射数据库_UID=newhashmap();
数据库UID.put(“管理”、“1234”);
试一试{
//获取套接字读写流
DataInputStream in=新的DataInputStream(conn.getInputStream());
PrintStream out=新的PrintStream(conn.getOutputStream());
//向新客户发送欢迎消息
out.println(“欢迎使用服务器\n键入您的用户名和密码,如:\nUsername\u password”);
//开始从客户端读取输入
而((line=in.readLine())!=null&&!line.equals(“.”){
//服务器用相同的消息进行回复
if(line.equalsIgnoreCase(“服务器退出”)){
//告诉服务器该命令已发出
System.out.println(“给定命令'server_quit',关闭“+conn.getPort()”处的客户端连接);
//告诉用户服务器正在关闭
println(“退出服务器…\n祝您愉快!”);
康涅狄格州关闭();
}
if(line.equals(“admin”+数据库UID.get(“admin”){
println(“欢迎回来,管理员!”);
}
if(line.equalsIgnoreCase(“hello”)| | line.equalsIgnoreCase(“hi”)){
out.println(“你好!”);
}
}
System.out.println(“客户端终止于”+conn.getPort());
康涅狄格州关闭();
}
捕获(IOE异常){
System.out.println(“套接字上的IOException:”+e);
e、 printStackTrace();
}
}

查看上面一行的括号:

 if(line.equals("admin_"+database_UID.get("admin") {

3开1关。这是不对的。当检查这类东西(括号,大括号)时,从零开始。加一表示开,减去一表示关。如果你没有以零结束,你就错过了一些(或者如果你以负结束,则添加了一些)。

请查看上面一行的括号:

 if(line.equals("admin_"+database_UID.get("admin") {

3开1关。这是不对的。当检查这类东西(括号,大括号)时,从零开始。加一表示开,减去一表示关。如果你没有以零结束,你就错过了一些(或者如果你以负结束,则添加了一些)。

请查看上面一行的括号:

 if(line.equals("admin_"+database_UID.get("admin") {

3开1关。这是不对的。当检查这类东西(括号,大括号)时,从零开始。加一表示开,减去一表示关。如果你没有以零结束,你就错过了一些(或者如果你以负结束,则添加了一些)。

请查看上面一行的括号:

 if(line.equals("admin_"+database_UID.get("admin") {
3开,1关。这是不对的。当检查这类东西(括号,大括号)时,从零开始。加一表示开,减去一表示关。如果你没有以零结束,那么你错过了一些(或者如果你以负结束,则添加了一些)

最后还有一个
}

最后还有一个
}

最后还有一个
}

最后有一个
}
试试这个:

if (line.equals("admin_" + database_UID.get("admin"))) {
而不是

if(line.equals("admin_"+database_UID.get("admin") {
试试这个:

if (line.equals("admin_" + database_UID.get("admin"))) {
而不是

if(line.equals("admin_"+database_UID.get("admin") {
试试这个:

if (line.equals("admin_" + database_UID.get("admin"))) {
而不是

if(line.equals("admin_"+database_UID.get("admin") {
试试这个:

if (line.equals("admin_" + database_UID.get("admin"))) {
而不是

if(line.equals("admin_"+database_UID.get("admin") {

哇-我以为它很简单,但我看不出来。谢谢你的帮助!没问题。如果对你有帮助,请将答案标记为正确!行,它说我需要等待7分钟左右。离题了,但知道“注意:Server_Test.java使用或覆盖了不推荐的API”吗意味着,与此同时?它似乎并没有阻止我的程序在.readLine()中正常运行已被弃用,这意味着建议不要使用它。现在有了更好的方法。哇-我原以为它很简单,但我看不出来。谢谢你的帮助!没问题。如果它对你有帮助,请将答案标记为正确!可以,它说我需要等待7分钟左右。离题,但知道什么吗“注意:Server_Test.java使用或覆盖了一个不推荐使用的API。”这意味着,同时?它似乎不会阻止我的程序在.readLine()中正常运行已被弃用,这意味着建议不要使用它。现在有了更好的方法。哇-我原以为它很简单,但我看不出来。谢谢你的帮助!没问题。如果它对你有帮助,请将答案标记为正确!可以,它说我需要等待7分钟左右。离题,但知道什么?”注意:Server_Test.java使用或覆盖了一个不推荐使用的API。“这意味着,与此同时?它似乎不会阻止我的程序在.readLine()中正常运行已被弃用,这意味着建议不要使用它。现在有了更好的方法。哇-我原以为它很简单,但我看不出来。谢谢你的帮助!没问题。如果它对你有帮助,请将答案标记为正确!可以,它说我需要等待7分钟左右。离题,但知道什么?”注意:Server_Test.java使用或覆盖不推荐使用的API。“这意味着,与此同时?它似乎不会阻止我的程序在中正常运行。readLine()已不推荐使用,这意味着建议不要使用它。现在有更好的方法。请注意措辞。”抛出“是指运行时错误。您应该得到编译器错误。请注意措辞。“Throw”是指运行时错误。您应该得到编译器错误。请注意措辞。“Throw”是指运行时错误。您应该得到编译器错误。请注意。”