gpt4 book ai didi

Java:字符串索引超出范围:-1

转载 作者:行者123 更新时间:2023-12-01 07:36:54 25 4
gpt4 key购买 nike

新代码:

我不知道这里发生了什么,我收到此错误:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(String.java:1949)
at client0_0_2.loginToClient(client0_0_2.java:98)
at client0_0_2.general(client0_0_2.java:196)
at client0_0_2.<init>(client0_0_2.java:208)
at client0_0_2.main(client0_0_2.java:215)

这是导致错误的方法的内容:

public String loginToClient() throws FileNotFoundException, IOException {
//decryptUsers();
int tries;
tries = 5;
while (tries > 0) {
System.out.println("LOGIN");
String usnm = c.readLine("Username: ");
char [] passwd = c.readPassword("Password: ");
users = new FileInputStream("users.fra");
DataInputStream dis = new DataInputStream(users);
BufferedReader br = new BufferedReader(new InputStreamReader(dis));
String logindat = br.readLine();
System.out.println(logindat);
int startUsnm = logindat.indexOf(usnm);
String logdat = logindat.substring(startUsnm, logindat.indexOf("."));
if (startUsnm == -1) {
System.err.println("Username not recognised, please try another or create user.");
usnm = "INV";
return usnm;
}
else {
int tendUsnm = logdat.indexOf(':');
int startPass = endUsnm + 1;
int tendPass = logdat.indexOf('.');
String Usnm = logdat.substring("0", tendUsnm);
String Pass = logdat.substring(startPass, endPass);
char [] Passwd = Pass.toCharArray();
if (usnm.equals(Usnm)) {
if (Arrays.equals(passwd,Passwd)) {
System.out.println ("Logged in. Welcome, " + usnm + ".");
String data = "LOGIN: " + usnm;
printLog(data);
//encryptUsers();
return usnm;
}
else {
System.out.println ("Incorrect password, please try again.");
String data = "PASWFAIL: " + usnm;
printLog(data);
tries -= 1;
}
}
else {
System.out.println ("Username not recognised.");
printLog("USNAMFAIL");
usnm = "INV";
return usnm;
//encrytUsers();
}
}
}
//encryptUsers();
System.exit(2);
return usnm;
}

它看起来有点像它试图访问某个东西的最后一个字符,这让它感到不安,但我不知道为什么。对新手有什么帮助吗?

编辑:

users.fra 在执行时包含用户名:密码

注意:第 98 行是

char [] Passwd = Pass.toCharArray();

n.b.不是家庭作业,而是个人项目。

将添加一个方法来处理用户名不在users.fra中的事件。

最佳答案

当找不到参数时,

indexOf() 返回 -1。我敢打赌,您正在搜索的字符串不包含您正在搜索的字符之一,并且当您尝试获取子字符串时,它会导致无效索引。

关于Java:字符串索引超出范围:-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10818232/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com