如何将矩阵变量调用到方法中
how to call a matrix variable into a method
我正在学习套接字编程,但我对这个矩阵有点问题。我知道这是一个愚蠢的问题,但我不知道如何解决它
void data(){
String[][] serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(server [1] [0]);
}
void process(String[][] serv){
int i = 0;
System.out.println("Processing...\n");
try{
for (i=0; i<3; i++) {
System.out.println(serv [i] [0]);
if (request.equals(serv [i] [0])) {
response = serv [i] [1];
}
}
}
catch(Exception ex){
System.out.println("Non trovato");
}
}
public static void main(String[] args) throws IOException{
final int port = 6000;
ServerSocket listenSock = new ServerSocket(port);
System.out.println("Server avviato. In ascolto su: " + listenSock.getLocalPort() + "\n");
while(true){
Socket socket = listenSock.accept();
System.out.println("Stabilita connessione con: "+socket.getPort()+"\n");
TCPServer server = new TCPServer(socket);
server.getRequest();
server.data();
server.process();
server.sendResponse();
server.close();
}
}
当我编译 javac 时给我这个消息
TCPServer.java:88: error: method process in class TCPServer cannot be applied to given types;
server.process();
^
required: String[][]
found: no arguments
reason: actual and formal argument lists differ in length
有什么解决办法吗?
您的 server.process()
方法采用 String
的二维数组。
在您的 main
方法中,您在没有参数的情况下调用它,因此出现错误。
首先,您的数组必须是一个实例变量,而不是 data() 方法的局部变量:
String[][] serv;
void data(){
serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(server [1] [0]);
}
然后就可以直接在process
方法中使用了,什么都不传:
void process() {
...
你的main方法可以保持不变。
另一种选择是 return 来自 data()
方法的数组并将其传递给 process()
方法:
String[][] data(){
String[][] serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(serv [1] [0]);
return serv;
}
并且在您的主要方法中:
server.process(server.data());
在此解决方案中,您无需更改 process()
方法中的任何内容。
我正在学习套接字编程,但我对这个矩阵有点问题。我知道这是一个愚蠢的问题,但我不知道如何解决它
void data(){
String[][] serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(server [1] [0]);
}
void process(String[][] serv){
int i = 0;
System.out.println("Processing...\n");
try{
for (i=0; i<3; i++) {
System.out.println(serv [i] [0]);
if (request.equals(serv [i] [0])) {
response = serv [i] [1];
}
}
}
catch(Exception ex){
System.out.println("Non trovato");
}
}
public static void main(String[] args) throws IOException{
final int port = 6000;
ServerSocket listenSock = new ServerSocket(port);
System.out.println("Server avviato. In ascolto su: " + listenSock.getLocalPort() + "\n");
while(true){
Socket socket = listenSock.accept();
System.out.println("Stabilita connessione con: "+socket.getPort()+"\n");
TCPServer server = new TCPServer(socket);
server.getRequest();
server.data();
server.process();
server.sendResponse();
server.close();
}
}
当我编译 javac 时给我这个消息
TCPServer.java:88: error: method process in class TCPServer cannot be applied to given types;
server.process();
^
required: String[][]
found: no arguments
reason: actual and formal argument lists differ in length
有什么解决办法吗?
您的 server.process()
方法采用 String
的二维数组。
在您的 main
方法中,您在没有参数的情况下调用它,因此出现错误。
首先,您的数组必须是一个实例变量,而不是 data() 方法的局部变量:
String[][] serv;
void data(){
serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(server [1] [0]);
}
然后就可以直接在process
方法中使用了,什么都不传:
void process() {
...
你的main方法可以保持不变。
另一种选择是 return 来自 data()
方法的数组并将其传递给 process()
方法:
String[][] data(){
String[][] serv = { {"url", "url ip"}, {"url", "url ip"}, {"url", "url ip"} };
System.out.println(serv [1] [0]);
return serv;
}
并且在您的主要方法中:
server.process(server.data());
在此解决方案中,您无需更改 process()
方法中的任何内容。