Java 为什么我的程序会跳过if语句

Java 为什么我的程序会跳过if语句,java,logic,tcpserver,Java,Logic,Tcpserver,我有一个tcp/ip程序,如果用户输入“再见”。它将停止连接,并结束程序。然而,当我键入“再见”时。从客户端来看,它不会执行if语句,而是执行另一个语句 节目的一部分 while ((inputLine = in.readLine()) != null) { System.out.println ("Server: " + inputLine); out.println(inputLine); String csvline = getCsvLine

我有一个tcp/ip程序,如果用户输入“再见”。它将停止连接,并结束程序。然而,当我键入“再见”时。从客户端来看,它不会执行if语句,而是执行另一个语句

节目的一部分

while ((inputLine = in.readLine()) != null) 
    { 
     System.out.println ("Server: " + inputLine); 
     out.println(inputLine); 

     String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
     compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

     if (inputLine.equals("Bye.")) {
         System.out.println("Exit program"); 
         break;
         } 

     out.close(); 
     in.close(); 
     clientSocket.close(); 
     serverSocket.close();
    }
public static void server(Scanner input1, Scanner input2, Scanner input3, Scanner input4) throws IOException{
        ServerSocket serverSocket = null; 
    try { 
         serverSocket = new ServerSocket(57634); 
        } 
    catch (IOException e) 
        { 
         System.err.println("Could not listen on port: 57635."); 
         System.exit(1); 
        } 

    Socket clientSocket = null; 
    System.out.println ("Waiting for connection.....");

    try { 
         clientSocket = serverSocket.accept(); 
        } 
    catch (IOException e) 
        { 
         System.err.println("Accept failed."); 
         System.exit(1); 
        } 

    System.out.println ("Connection successful");
    System.out.println ("Waiting for input.....");

    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), 
                                      true); 
    BufferedReader in = new BufferedReader( 
            new InputStreamReader( clientSocket.getInputStream())); 

    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
        { 
         System.out.println ("Server: " + inputLine); 
         out.println(inputLine); 

         String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
         compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

         if (inputLine.equals("Bye.")) {
             System.out.println("Exit program"); 
             break;
             } 

         out.close(); 
         in.close(); 
         clientSocket.close(); 
         serverSocket.close();
        }

}
计划的大部分

while ((inputLine = in.readLine()) != null) 
    { 
     System.out.println ("Server: " + inputLine); 
     out.println(inputLine); 

     String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
     compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

     if (inputLine.equals("Bye.")) {
         System.out.println("Exit program"); 
         break;
         } 

     out.close(); 
     in.close(); 
     clientSocket.close(); 
     serverSocket.close();
    }
public static void server(Scanner input1, Scanner input2, Scanner input3, Scanner input4) throws IOException{
        ServerSocket serverSocket = null; 
    try { 
         serverSocket = new ServerSocket(57634); 
        } 
    catch (IOException e) 
        { 
         System.err.println("Could not listen on port: 57635."); 
         System.exit(1); 
        } 

    Socket clientSocket = null; 
    System.out.println ("Waiting for connection.....");

    try { 
         clientSocket = serverSocket.accept(); 
        } 
    catch (IOException e) 
        { 
         System.err.println("Accept failed."); 
         System.exit(1); 
        } 

    System.out.println ("Connection successful");
    System.out.println ("Waiting for input.....");

    PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), 
                                      true); 
    BufferedReader in = new BufferedReader( 
            new InputStreamReader( clientSocket.getInputStream())); 

    String inputLine; 

    while ((inputLine = in.readLine()) != null) 
        { 
         System.out.println ("Server: " + inputLine); 
         out.println(inputLine); 

         String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
         compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

         if (inputLine.equals("Bye.")) {
             System.out.println("Exit program"); 
             break;
             } 

         out.close(); 
         in.close(); 
         clientSocket.close(); 
         serverSocket.close();
        }

}

如果用户键入Bye,则从代码中选择。它将中断while循环,但不会关闭输入/输出流,也不会关闭客户端/服务器套接字

out.close(); 
in.close(); 
clientSocket.close(); 
serverSocket.close();

上面的代码发生在if语句之后的while循环中。但是,如果if语句为true,则循环中断,无法到达这些语句

如果用户键入Bye,则从代码中选择。它将中断while循环,但不会关闭输入/输出流,也不会关闭客户端/服务器套接字

out.close(); 
in.close(); 
clientSocket.close(); 
serverSocket.close();

上面的代码发生在if语句之后的while循环中。但是,如果if语句为true,则循环中断,无法到达这些语句

如果希望同时拥有多个客户端,则可能需要在新线程中处理每个客户端。

如果希望同时拥有多个客户端,则可能需要在新线程中处理每个客户端。

while循环中的中断正在退出循环。它应该是这样的,否则你的近处不会被清理干净

 while ((inputLine = in.readLine()) != null) 
        { 
         System.out.println ("Server: " + inputLine); 
         out.println(inputLine); 

         String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
         compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

         if (inputLine.equals("Bye.")) {
             System.out.println("Exit program"); 
             break;
             } 
        }

         out.close(); 
         in.close(); 
         clientSocket.close(); 
         serverSocket.close();

while循环中的中断正在退出循环。它应该是这样的,否则你的近处不会被清理干净

 while ((inputLine = in.readLine()) != null) 
        { 
         System.out.println ("Server: " + inputLine); 
         out.println(inputLine); 

         String csvline = getCsvLineVal (getLocation34CSV(getTag34Value(Tag34Location(getTagCSV( parseFixMsg(inputLine ,inputLine))), getValueCSV( parseFixMsg(inputLine ,inputLine))), getVal34(input1,  input2)), getCSVLine( input3,  input4) );
         compareClientFixCSV( getTagCSV( parseFixMsg(inputLine ,inputLine)), getValueCSV(parseFixMsg(inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));

         if (inputLine.equals("Bye.")) {
             System.out.println("Exit program"); 
             break;
             } 
        }

         out.close(); 
         in.close(); 
         clientSocket.close(); 
         serverSocket.close();
尝试输入line.trim.equalsBye。;看看这种情况是否仍然存在。请尝试inputLine.trim.equalsBye。;看看这种情况是否仍然存在。