gpt4 book ai didi

Java - 没有按预期获得 "StringIndexOutOfBoundsException"

转载 作者:行者123 更新时间:2023-12-01 22:43:06 28 4
gpt4 key购买 nike

我有以下代码

public class test{
public static void main(String[] args){
String one = "x";
if(one.charAt(one.indexOf('x')+1)== 'p'){
System.out.println("test");
}
}
}

这会导致以下错误:

线程“main”中出现异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:1 在 java.lang.String.charAt(String.java:658) 在 test.main(test.java:4)

我预计会发生这种情况,我的理解是,发生这种情况是因为字符串只有 1 个索引 (0),因此不可能在索引 1 处找到字符

one.charAt(one.indexOf('x')+1)== 'p'

如果我的理解是正确的,我无法理解为什么另一个程序没有同样的问题

class XClass{
boolean doubleX(String str){
boolean is = false;
int indexes = str.length()-1;
if(str.indexOf('x')== indexes){
is = false;
}else if(str.charAt(str.indexOf('x')+1)=='x'){//same code as the program above
is = true;
}
return is;
}
}

public class ImplementXClass{
public static void main(String[] args){
XClass Xmen = new XClass();
boolean result = Xmen.doubleX("x");
System.out.println(result);
}
}

即使方法参数是具有一个索引(“x”)的字符串,该程序也能成功编译。

  • 如果没有索引 1,程序如何运行 str.charAt(str.indexOf('x')+1)=='x' 这一行。
  • 作为第一个程序,它不应该编译失败吗?
  • 我错过了什么?

最佳答案

str"x" 时,else if 甚至不会运行。

if 条件

if(str.indexOf('x') == indexes)

true,因为str.indexOf('x')返回0,并且indexes也是0 -- str.length() - 1

因此,is 设置为 false 并且永远不会评估 else if 条件。因此,不会发生 IndexOutOfBoundsException

关于Java - 没有按预期获得 "StringIndexOutOfBoundsException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817571/

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