gpt4 book ai didi

java - 修改字符数组中的空字符

转载 作者:行者123 更新时间:2023-12-02 13:24:50 25 4
gpt4 key购买 nike

我试图从控制台获取一定长度的字符串,并将字符串中的空字符设置为星号。

System.out.println("Enter a string of digits.");

someString = input.next();

if(someString.matches("\\d{0,9}")) {

charArr = someString.toCharArray();

for ( char digit: charArr) {
if(!Character.isDefined(charArr[digit])){
charArr[digit] = '*';
}
}

System.out.printf("Your string is: %s%n", new String(charArr));

这段代码抛出数组索引越界异常,我不知道为什么。

最佳答案

for ( char digital: charArr) 将迭代 charArr 中的每个字符。
因此,digit 包含来自 charArr 的字符值。

当您通过编写 charArr[digit] 访问 charArr 中的元素时,您正在从数据类型 char 转换 digit code> 到 int 值。

例如,您有 charArr = new char[]{'a','b','c'}
charArr['a'] 相当于 charArr[97],但 charArr 的大小仅为 3。

因此,charArr 无法访问超出其大小的元素,并抛出 ArrayIndexOutOfBoundsException

<小时/>

解决方案:按数组索引而不是按元素循环。

for(int i = 0; i < charArr.length; i++) {
// access using charArr[i] instead of charArr[digit]
...
}

关于java - 修改字符数组中的空字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43432993/

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