我正在尝试存储一个字符串并判断它是大写/小写字母还是数字,如果字符是小写字母,则重新显示大写字符,如果字符是大写字母,则重新显示小写字符 如果字符是数字,则将其显示为星号。我可以用数字来实现,但如果我为字母添加 .toString().toLowerCase() 或 .toUpperCase() ,程序就会不断循环。我该怎么办?
public class CharacterArray {
public static void main(String[] args) {
StringBuilder input = new StringBuilder("800 Test St NY");
for (int i = 0; i < input.length(); i++) {
System.out.println(input.charAt(i));
if(Character.isDigit(input.charAt(i))){
input.replace(i,i+1,"*");
}
else if(Character.isUpperCase(input.charAt(i))) {
input.replace(i, i+1,input.toString().toLowerCase());
}
else if(Character.isLowerCase(input.charAt(i))) {
input.replace(i, i+1,input.toString().toUpperCase());
}
System.out.println(input);
}
}
}
最佳答案
当你这样做时:
input.replace(i, i+1, input.toString().toLowerCase());
您正在用整个字符串(小写)替换一个字符,使输入
变得越来越长,因此您永远无法到达末尾。
相反:
input.replace(i, i+1, input.substring(i,i+1).toLowerCase());
与转换为大写字母的位置类似。
编辑:修复了将错误的参数类型传递给replace
的问题。
Volune 的答案看起来更好。使用它。
关于java - java 字符串生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25922801/