我的教授指示我在一个页面上自我介绍,好像我是一个对象,我必须解决三件事:
1)对象状态,2)行为,3)身份.
但是,我仍然对如何做这样的事情感到困惑.(我已经阅读了我必须解决的三个属性,但我不知道如何将它应用于一个人).
例如,有人告诉我,狗会有各种状态,如名称,颜色和品种; 以及行为,例如走路,吠叫或摇尾巴.
那么我会做类似的事情:
Student me = new Student();
System.out.println(me.getName()); //a state?
System.out.println(me.getCurrentActivity()); //A behavior? (if it were to return watching TV or something)
System.out.println(me.get....()); //???
Run Code Online (Sandbox Code Playgroud)
或者我在这里得到了完全错误的想法?
我目前正在编写一款多人游戏,并且正在致力于网络方面的工作。我设置了一个数据包系统,它的工作方式(至少对于字符串)是需要多个字符,最多为“X”个字符。将字符转换为字节以发送到服务器。如果少于 X 个字符,则剩余字节设置为 0。问题是,当在服务器上处理此信息并将其转换为字符串时,0 字节字符是 \\'\xe2\x96\xa1 \' 在我的控制台中,并且在我的 JTextPane 中不可见。如何以干净的方式从字符串中删除所有这些 0 字节字符?我不希望有另一个循环和更多变量,只是为了在转换为字符串之前删除 0 字节。没有人喜欢看起来脏兮兮的代码。:p
\n\n数据包数据:
\n\n03100101118000000000971001091051100000000\nRun Code Online (Sandbox Code Playgroud)\n\n结果字符串:
\n\n我尝试过的:
\n\nusernameString.replaceAll(new String(new byte[] {0}, "UTF-8"), "");\npasswordString.replaceAll(new String(new byte[] {0}, "UTF-8"), "");\nRun Code Online (Sandbox Code Playgroud)\n\n然而,这根本没有改变字符串。
\n我正在尝试在正在处理的程序中加载文件。我通过使用getClassLoader()。getResource()来做到这一点。能够找到该文件时,此方法非常适用。但是,当找不到文件时,它将引发NullPointerException。它不应该抛出FileNotFoundException,或者getResource()不会抛出此类异常吗?
这是代码(相当标准的文件加载):
public static File loadFile(String path) throws FileNotFoundException
{
return new File(FileHandler.class.getClassLoader().getResource(path).getFile());
}
//somewhere else
loadFile("data/xt.txt");
Run Code Online (Sandbox Code Playgroud)
如果xt.txt存在,则代码可以正常工作。如果不是,则抛出NullPointerException。我可以轻松地修改代码以处理NullPointerException,但我无法想到为什么它首先返回null而不是FileNotFound。
我现在正在服务器上玩游戏.服务器的数据包读取循环是阻塞的,并且通常等待直到收到数据包才能继续循环.但是,如果客户端断开连接,DataInputStream将返回单个字节(-1),并且如预期的那样快速连续执行循环.但是,我不使用DataInputStream的read()方法一次读取一个字节,我使用read(byte [])方法将它们一次性读取到一个字节数组中.因此,我无法轻易检测到流是否返回值为-1的单个字节.
可能的解决方案:我可以检查数组的第一个字节是否为-1,如果是,则循环遍历数组以查看数组的其余部分是否为零.这样做看起来效率极低,我觉得随着客户端数量的增加会影响性能.
这是我的数据包读取循环的简化版本:
while (!thread.isInterrupted() && !isDisconnected())
{
try
{
byte[] data = new byte[26];
data = new byte[26];
input.read(data);
//Need to check if end of stream here somehow
Packet rawPacket = Packet.extractPacketFromData(data); //Constructs packet from the received data
if(rawPacket instanceof SomePacket)
{
//Do stuff with packet
}
}
catch(IOException e)
{
disconnectClient(); //Toggles flag showing client has disconnected
}
}
Run Code Online (Sandbox Code Playgroud)