此代码在嵌套 if 条件之后不起作用。我正在尝试将 String
转换为标题大小写,只要在字符串中遇到空格,我就会检查下一个字符是否为小写,并使用 ASCII 字符编码将其转换为大写。但是,它确实会执行到嵌套的 if
循环,但不会执行那里的条件。我使用 Eclipse 调试视角得出了这个结论
public class Word {
public static void main(String args[]) {
String rev= "This is a string";
char a[]=new char[rev.length()];
for (int i = 0; i < a.length;i ++) {
a[i]=rev.charAt(i);
if (a[i] == ' ') {
if (a[i+1] >= 'a' && a[i+1] <= 'z') {
a[i+1] -= 32;
}
}
}
String title=new String (a);
System.out.print(title);
}
}
最佳答案
给定程序的问题是:
如果 (a[i+1] >= 'a' && a[i+1] <= 'z')
, a[i+1] 未被 a[i]=rev.charAt(i) 初始化;所以,在(i +1)
索引,它在 a[i+1]
上没有获得任何值。
您在索引 (i +1) using a[i+1] -= 32;
中使用大写字母在下一次迭代中,该索引值再次替换为 a[i]=rev.charAt(i)
;
将最后一个字符视为空格,然后使用 if (rev.charAt(i) == ' ' && i +1 < a.length)
处理条件
检查一下:
public class Word {
public static void main(String args[]) {
String rev = "This is a string";
char[] a = new char[rev.length()];
int i = 0;
for (; i < a.length; i++) {
a[i] = rev.charAt(i);
if (rev.charAt(i) == ' ' && i + 1 < a.length) {
if (rev.charAt(i+1) >= 'a' && rev.charAt(i+1) <= 'z') {
a[i + 1] = (char)(rev.charAt(i + 1) - 32);
i++;
}
}
}
String title = new String(a);
System.out.print(title);
}
}
输出:
This Is A String
关于java - 代码流程未进入嵌套 if 语句以将字符串更改为标题大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32781754/