gpt4 book ai didi

java - 字符串 "For input string: "-l"被执行并输出,即使它不存在于代码中(java线程)

转载 作者:行者123 更新时间:2023-12-02 02:54:55 24 4
gpt4 key购买 nike

该程序的目的是从服务器向客户端发送文本消息(UTF-8 字符串),反之亦然,就像两个人在手机上互相发短信一样(一部手机是客户端,一部手机是服务器) )

在下面的屏幕截图中,有一个输出显示“对于输入字符串:“-l”,但代码中实际上并不存在。

enter image description here

一共有三个文件,一个是主要功能,一个是服务端,一个是客户端。

命令行参数“-l”(如果存在)将运行服务器线程/服务器文件。

如果“-l”不存在,它将运行客户端线程/客户端文件。

DirectMessengerCombined.java代码(主函数文件):

public class DirectMessengerCombined
{

public static void main(String[] args)
{
DirectMessengerClient Client1 = new DirectMessengerClient();
DirectMessengerServer Server1 = new DirectMessengerServer();
for (int i = 0; i < args.length; i++)
{
boolean Client = false;
boolean Server = false;
if(args[0].equals("3000"))
{
Client1.ClientRun(args);
}
switch (args[0].charAt(0))
{
case '-':
if(args[0].equals("-l"))
{
Server = true;
if(Server==true)
{
Server1.ServerRun(args);
}
}

}
i=args.length + 20;



}
}

}

DirectMessengerServer.java代码:

import java.io.*;
import java.net.*;
import java.util.*;
//import static java.nio.charset.StandardCharsets.*;
public class DirectMessengerServer
{
void ServerRun(String[] args)
{

Thread Server = new Thread ()
{
public void run ()
{
//String address="127.0.0.1";
System.out.println("Server thread is now running");
try
{
System.out.println("Try block begins..");
int port_number1= Integer.valueOf(args[0]);
System.out.println("Port number is: " + port_number1);
// listener = new ServerSocket(port_number1);
// SocketAddress addr = new InetSocketAddress(address, port_number1);
System.out.println("Listening for connections..");
System.out.println( "Listening on port: " + ( port_number1 ) );
// client_socket= server_socket.accept();
// BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8"));
// PrintWriter output= new PrintWriter( client_socket.getOutputStream(), true );
// outputstream = new DataOutputStream(smtpSocket.getOutputStream());
// inputstream = new DataInputStream(smtpSocket.getInputStream());
// String input_line= reader.readLine();
System.out.println( "Received from client: " );
// System.out.println( input_line );
// output.println( input_line );
}
catch ( Exception e )
{
System.out.println( e.getMessage() );
}
}
};
Server.start();
}
}

DirectMessengerClient.java代码:

import java.io.*;
import java.net.*;
import java.util.*;
import static java.nio.charset.StandardCharsets.*;
public class DirectMessengerClient
{
//static String[] arguments;
//public static void main(String[] args)
//{
// arguments = args;
//}
public DirectMessengerClient()
{

//System.out.println("test.");

}
public void ClientRun(String[] args)
{
Thread Client = new Thread ()
{
public void run()
{
System.out.println("Client thread is now running");
// String address="127.0.0.1";
// ServerSocket server_socket = null;
// Socket client_socket = null;
//Socket smtpSocket = null;
DataOutputStream outputstream;
DataInputStream inputstream;
try
{
System.out.println("Try block begins..");
int port_number1= Integer.valueOf(args[0]);
System.out.println("Port number is: " + port_number1);
// listener = new ServerSocket(port_number1);
// SocketAddress addr = new InetSocketAddress(address, port_number1);
System.out.println("Listening for connections..");
System.out.println( "Listening on port: " + Integer.toString( port_number1 ) );
// client_socket= server_socket.accept();
// BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8"));
// PrintWriter output= new PrintWriter( client_socket.getOutputStream(), true );
// outputstream = new DataOutputStream(smtpSocket.getOutputStream());
// inputstream = new DataInputStream(smtpSocket.getInputStream());
// String input_line= reader.readLine();
System.out.println( "Received from client: " );
// System.out.println( input_line );
// output.println( input_line );
}
catch ( Exception e )
{
System.out.println( e.getMessage() );
}

}
};

Client.start();
}
}

我的问题是:当代码中实际不存在“for input string "-l”时,如何输出它?

最佳答案

它正在由您的 System.out.println( e.getMessage() ); 打印。

您不应该这样做,因为您会发现它很令人困惑并且它没有描述整个异常。请改用e.printStackTrace();

在您成功看到完整的异常后,通过更改来修复您的代码

int port_number1= Integer.valueOf(args[0]);

int port_number1= Integer.valueOf(args[1]);

关于java - 字符串 "For input string: "-l"被执行并输出,即使它不存在于代码中(java线程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43264961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com