我写了一个简单的for循环,打印字符串开头的第一个字符,然后打印字符串结尾的第一个字符。等等,但是print语句没有显示任何内容,为什么?
public class JavaOOP {
public static void main(String args[]){
String string = "abca";
for(int i=0,j=string.length()-1;i<string.length()/2+1 && j>string.length()/2+1;i++,j--){
System.out.println(string.charAt(i)+ " " + string.charAt(j));
}
}
}
3条答案
按热度按时间vuktfyat1#
不需要循环。
这是因为for-loop条件语句的第二个条件语句永远不会满足,因此循环永远不会迭代。
您可以使用 String#length 值捕获最后一个值。
请记住,由于字符是使用从0开始的索引引用的,因此最后一个字符将是长度减1。
输出量
你可以使用循环来递归地捕获第一个和最后一个字符。
示例输出,当 string 为,“堆栈溢出” 时。
332nm8kg2#
请注意,j从3开始,在本例中,当j大于3时,条件检查,因此循环不会运行。
还请注意,这两个条件可以简化为
i < j
。您还可以选择将.charAt(x)简化为[x]
uwopmtnx3#
你甚至不需要两个变量:
本质上,您使用的是
String
的对称性。需要字符与字符串的两端具有相同的距离(索引为0
和input.length() - 1
)。所以i
是你到两端的距离,计算为0 + i
和input.length() - 1 - i
。这将导致(不重复奇数长度字符串中的字符):