我需要一种方法来获得3个值的中值,我认为这是一个编写泛型方法的好机会,因为我没有真正实践过.我写了这个并且看起来非常直截了当,虽然我得到了警告,但根据我的测试,它似乎工作得很好.
我知道我可以使用固有排序的集合,或者Collections.sort()
,但这种方法是为了理解.
我想指出一些事情:
medianHelper
与Arrays.asList(a, b, c)
这是为什么?试图搜索这个给我无关的结果,否则它是难以捉摸的,因为我不确定发生了什么.我得到了一个UnsupportedOperationException
,但这不是我下面的方式.方法如下:
private static <T extends Comparable> T median(T a, T b, T c) {
List<T> medianHelper = new ArrayList<>();
T max;
T min;
medianHelper.add(a);
medianHelper.add(b);
medianHelper.add(c);
if (a.compareTo(b) >= 0) {
max = a;
min = b;
} else {
max = b;
min = a;
}
if (max.compareTo(c) == -1) {
max = c;
}
if (min.compareTo(c) >= 0) {
min = c;
} …
Run Code Online (Sandbox Code Playgroud) 我是套接字和网络编程的新手,这是我尝试创建一个简单的聊天服务器,我的代码似乎没有任何错误(据我所知),它编译得很好但是当我尝试运行它时,似乎陷入困境,什么都不做.
抱歉,如果这样的事情已经被问到,我什么都没找到,但我不确定是什么问题,所以我真的不知道该找什么.
服务器:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.stage.Stage;
public class ChatServer extends Stage {
TextArea informationArea = new TextArea();
String message = null;
public ChatServer() {
informationArea.setEditable(false);
setTitle("Chat Server");
setScene(new Scene(informationArea, 500, 300));
show();
try {
ServerSocket serverSocket = new ServerSocket(8000);
informationArea.appendText("Server started at " + new Date() + '\n');
int clientNumber = 1;
while(true) {
Socket socket = serverSocket.accept();
InetAddress inetAddress = socket.getInetAddress(); …
Run Code Online (Sandbox Code Playgroud)