我试图在Java做简单的聊天应用程序,但我得到这个错误。怎么了?我该怎么修好它?for循环中有一些错误?
我得到这个错误
线程“main”java.lang.IndexOutoFboundsException:索引0超出长度0的界限,位于java.base/jdk.internal.util.preconditions.OutoFbounds(preconditions.java:64)位于java.base/jdk.internal.util.preconditions.OutoFboundscheckindex(preconditions.java:70)位于java.base/jdk.internal.util.preconditions.CheckIndex(preconditions.java:248)位于
package zad1;
import java.io.*;
import java.nio.file.*;
import java.util.*;
import java.util.concurrent.*;
public class Main {
public static void main(String[] args) throws Exception {
String testFileName = System.getProperty("user.home") + "/ChatTest.txt";
List<String> test = Files.readAllLines(Paths.get(testFileName));
String host = test.remove(0);
int port = Integer.valueOf(test.remove(0));
ChatServer s = new ChatServer(host, port);
s.startServer();
ExecutorService es = Executors.newCachedThreadPool();
List<ChatClientTask> ctasks = new ArrayList<>();
for (String line : test) {
String[] elts = line.split("\t");
String id = elts[0];
int wait = Integer.valueOf(elts[1]);
List<String> msgs = new ArrayList<>();
for (int i = 2; i < elts.length; i++) msgs.add(elts[i] + ", mĂłwiÄ™ ja, " +id);
ChatClient c = new ChatClient(host, port, id);
ChatClientTask ctask = ChatClientTask.create(c, msgs, wait);
ctasks.add(ctask);
es.execute(ctask);
}
ctasks.forEach( task -> {
try {
task.get();
} catch (InterruptedException | ExecutionException exc) {
System.out.println("*** " + exc);
}
});
es.shutdown();
s.stopServer();
System.out.println("\n=== Server log ===");
System.out.println(s.getServerLog());
ctasks.forEach(t -> System.out.println(t.getClient().getChatView()));
}
}
我可以准确地理解抛出异常的点,因为您在代码中没有显示行号。
乍一看,应该在此处抛出异常:
String host = test.remove(0);
int port = Integer.valueOf(test.remove(0));
在我看来,除非您确信您总是从chattest.txt
文件中获得两行,否则其中一行总是会引发异常,因为files.readalllines(paths.get(testFileName));
语句很可能返回一个只有一个元素的列表,而您正在尝试获得两个元素。
希望有帮助,否则,请分享更多信息,我将尝试进一步帮助您。
这是我的代码: 这是android文档中给出的默认值。我只是改了网址。 这是我的错误消息: java.lang.StringIndexOutOfBoundsException:长度=28;RegionStart=1;RegionLength=499在java.lang.String.SubString(String.java:1931)在com.example.my.app.MainActivit
谁能告诉我为什么吗?类的构造函数是,但是编译器仍然声称找不到它的构造函数。
我收到的错误: 这是我的代码 我尝试了几种不同的方法来读取此文件,但我无法弄清楚为什么会发生这种情况。我使用的扩展名.rtf,.txt,认为这可能是文件本身的问题。该文件仅包含以下内容:
我读过List.of和Arrays.AsList之间的区别是什么? 我不明白的是,在我的Maven pom.xml中进行了一些依赖项升级之后,为什么我的所有 不再编译。当我在IntelliJ中键入时,autocomplete只会出现成员。我想也许我没有导入?所以显式地指定了它,但仍然: 为什么我好像不能用?我一定是在做傻事...
我在读关于锁的
我有一个arraylist,其中添加了以下数字。 然后我使用下面的代码遍历列表并在打印前求和。 它正在打印出一个值6。有人知道发生了什么吗?或者有人能解释我在这里做错了什么吗?感谢您的时间,如果有什么我可以补充澄清的,请不要犹豫。