Java 为什么我的服务器/客户端聊天室程序会出现这些错误?
我已经在这个程序上工作了几个小时了,所以我脑子都快死了,不知道为什么会出现这些错误。对Java编程相当陌生对我的情况也没有多大帮助Java 为什么我的服务器/客户端聊天室程序会出现这些错误?,java,Java,我已经在这个程序上工作了几个小时了,所以我脑子都快死了,不知道为什么会出现这些错误。对Java编程相当陌生对我的情况也没有多大帮助 On line 27 - "error: method Add in class ClientManager cannot be applied to given types;" On line 34 - "error: cannot find symbol" Also line 34 - "error: cannot find symbol" On line 42
On line 27 - "error: method Add in class ClientManager cannot be applied to given types;"
On line 34 - "error: cannot find symbol"
Also line 34 - "error: cannot find symbol"
On line 42 - "error: cannot find symbol"
下面是我为这些特定行编写的代码片段:
Line 27 - CM.Add();
Line 34 - MyClient Client = new MyClient(Socket, CM);
Line 42 - Client.SendToAllClients(S);
这是我的服务器类的完整代码。客户机类工作得非常好
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Server
{
public static void main(String[] args) throws Exception
{
new MyServer().start();
}
}
class MyServer extends Thread
{
ServerSocket SS = new ServerSocket(11200);
Socket S;
ClientManager CM = new ClientManager();
public void run()
{
while(true)
{
S = SS.accept();
CM.Add();
}
}
}
class MyClient extends Thread
{
MyClient Client = new MyClient(Socket, CM);
Scanner S;
public void run()
{
while(true)
{
S = new Scanner(System.in);
Client.SendToAllClients(S);
}
}
public void Send(String S)
{
PrintWriter.println(S);
}
}
class ClientManager
{
MyClient[] X = new MyClient[15];
int num = 0;
public synchronized void Add(MyClient C)
{
X[num] = C;
num++;
C.start();
}
public synchronized void SendToAllClient(String S)
{
int i;
for(i = 0;i < num;i++);
{
X[i].Send(S);
}
}
}
import java.io.*;
导入java.net。*;
导入java.util.Scanner;
公共类服务器
{
公共静态void main(字符串[]args)引发异常
{
新建MyServer().start();
}
}
类MyServer扩展线程
{
ServerSocket SS=新的ServerSocket(11200);
插座;
ClientManager CM=新的ClientManager();
公开募捐
{
while(true)
{
S=SS.accept();
CM.Add();
}
}
}
类MyClient扩展线程
{
MyClient客户端=新的MyClient(Socket,CM);
扫描器;
公开募捐
{
while(true)
{
S=新扫描仪(系统英寸);
客户。发送给所有客户;
}
}
公共无效发送(字符串S)
{
PrintWriter.println(S);
}
}
类客户经理
{
MyClient[]X=新的MyClient[15];
int num=0;
公共同步作废添加(MyClient C)
{
X[num]=C;
num++;
C.开始();
}
公共同步的void SendToAllClient(字符串S)
{
int i;
对于(i=0;i
更新:我不确定在
CM.Add()中需要什么参数代码>我可以告诉您出现这些错误的原因。你需要了解它,然后根据需要进行更改
第27行-CM.Add()代码>
在您的ClientManager
类中,方法的签名是public synchronized void Add(MyClient C)
,因此您可以看到,它需要一个参数,即类MyClient的对象,但是当您调用此方法时,您没有传递任何参数
MyClient=newmyclient(Socket,CM)代码>
在这一行中,您试图创建类MyClient
的对象,并传递两个参数Socket和CM对象,但在类MyClient中,您没有创建任何接受两个参数的构造函数,默认情况下只有default构造函数,它可以被称为newmyclient()代码>如果要传递参数,则需要自己创建参数化构造函数
Client.SendToAllClients代码>
这里Client
是类MyClient
的对象,方法SendToAllClients
存在于ClientManager
类中,如果要调用此方法,则需要ClientManager
类的对象,不能用MyClient
的对象调用它
除此之外,我想告诉您,您没有遵循Java的命名约定。遵循命名约定是一个很好的实践,它可以帮助其他人轻松理解您的代码 27)CM.add()
需要一个参数。34)MyClient=newmyclient(Socket,CM)代码>初始化应该在构造函数或方法中<代码>客户端。发送给所有客户端
42)MyClient(属于Client
类型)没有方法SendToAllClients
,该方法位于ClientManager
中。48)无法创建PrintWriter
的对象。到目前为止,我唯一能解决的问题是PrintWriter对象。我不确定要在CM.Add()和其他参数中放入什么参数,我只是不知道..我在ClientManager
类中看到了public synchronized void Add(MyClient C)
。当您在MyServer
中使用该方法时,必须向其传递一个MyClient
对象。由于您是这里的新用户,我想告诉您,如果有任何答案可以解决您的问题,那么您应该接受该答案,以便其他人知道什么对您有效。要接受答案,您只需单击答案左侧上下箭头下方的右勾号。谢谢您的帮助,但我想知道您是否可以给我提供更具体的信息。。我对Java非常陌生,大概70%的代码是由我的教授提供的。我几乎被告知要填空。我将参数C添加到CM.Add()中;但是我对构造器不够熟悉,不知道如何解决第二个问题。谢谢你抽出时间!