Java打印字母对问题求助:期望输出Aa Bb Cc却循环A-z到B-z
解决字母对打印问题
嘿,我懂你想要的是打印Aa、Bb、Cc这种一一对应的字母对,而现在的代码会先把A和所有小写字母从a到z配对一遍,再轮到B重复这个过程对吧?这是因为你用了嵌套循环,内层循环会把每个大写字母对应的所有小写字母都遍历完,才会进入下一个大写字母。
问题根源
你的原代码逻辑是:
char ch, ch2; for(ch = 'A'; ch <= 'Z'; ch++){ for(ch2 = 'a'; ch2 <= 'z'; ch2++) System.out.println(ch + "" + ch2); }
外层循环每迭代一次(比如ch='A'),内层循环就会完整跑一遍a到z,所以输出是Aa, Ab, Ac...Az, Ba, Bb...Bz,和你想要的一一对应效果不符。
修正方案
其实根本不需要嵌套循环,只需要让大写字母和对应的小写字母同步递增就行。ASCII码里,大写字母和对应小写字母的差值是固定的32(比如'A'=65,'a'=97),或者用Java自带的Character.toLowerCase()方法更直观:
方法1:利用ASCII码差值
char ch; for(ch = 'A'; ch <= 'Z'; ch++){ // 小写字母 = 大写字母 + 32,注意强制转换为char类型 char lowerCh = (char)(ch + 32); System.out.println(ch + "" + lowerCh); }
方法2:使用Character类的API
char ch; for(ch = 'A'; ch <= 'Z'; ch++){ char lowerCh = Character.toLowerCase(ch); System.out.println(ch + "" + lowerCh); }
效果说明
这两种写法都会让循环每次迭代时,同时处理一个大写字母和它对应的小写字母,输出结果就是你想要的:Aa、Bb、Cc……一直到Zz。
内容的提问来源于stack exchange,提问作者iDevdevdev
相关产品推荐
相关产品推荐

