打印字母Aa Bb Cc Dd

时间:2019-08-09 14:52:33

标签: java

我正在尝试打印Aa Bb Cc,但它总是重复A到z,然后B到z。

char ch, ch2;
    for(ch = 'A'; ch <= 'Z'; ch++){
    for(ch2 = 'a'; ch2 <= 'z'; ch2++)
       System.out.println(ch + "" + ch2);

3 个答案:

答案 0 :(得分:4)

您不希望嵌套循环:

url: "/base/{param1}-{*param2}/more/routing",

但是一个个:

for(ch = 'A'; ch <= 'Z'; ch++)
  for(ch2 = 'a'; ch2 <= 'z'; ch2++) {
     /* All combinations of ch and ch2: Aa..AzBa..Bz..Za..Zz */
  }

编辑for(char ch = 'A'; ch <= 'Z'; ch++){ System.out.println(ch + "" + (char)(ch - 'A' + 'a')); 代表什么?

(char)(ch - 'A' + 'a')

最后,由于 ch in 'A'..'Z' range (from for loop) ch - 'A' in 0..26 range ch - 'A' + 'a' in 'a'..'z' range 的类型为ch - 'A' + 'a,并且希望它为int,而不是'a',因此我们将int bak强制转换为96,也可以使用{ {1}}如普罗霍罗夫(M. Prokhorov)在以下评论中所建议:

(char)

答案 1 :(得分:0)

如@Dmitry所示,您不需要嵌套循环。

您可以利用以下事实:由于字符的表示方式,Java char可以与int进行相互转换。有关详细信息,请参见Wikipedia article on ASCII。它还具有每个字符的ASCII值的便捷图表。例如,A是ASCII 65,a是ASCII97。也就是说,您可以进行算术运算以在大写和小写字母之间进行“转换”。大写字母和小写字母相差32。

话虽如此,您可以使用两行代码来做到这一点:

for(char ch = 'A'; ch <= 'Z'; ch++){
   System.out.println(ch + "" + (char)(ch + 32));

或者您也可以使用@Dmitry建议的出色解决方案之一。

答案 2 :(得分:0)

嵌套循环的工作方式:

第1步:首先,编译器将检查第一个for循环中的条件。

  • 如果条件为True,则For循环内的语句为 被执行。这意味着,编译器将进入第二个For循环(在您的情况下ch的值为'A')。 转到 步骤2

  • 如果条件为False,则编译器将从For Loop中退出

第2步:编译器将检查第二个for循环内的条件。

  • 如果条件为True,则第二个For循环内的语句将 被执行。这意味着它将从语句1到N(在您的情况下从'a'到'Z')执行
  • 如果条件为False,则编译器将从第二个For Loop中退出

第3步:从第二个for循环退出后,编译器将检查for循环内的条件(重复第1步)(此处,外循环变量ch的值为'B'等等)

一个简单的技巧可能是在循环外初始化ch2变量并使用一个简单的循环:

char ch, ch2 = 'a';
for(ch = 'A'; ch <= 'Z'; ch++){
   System.out.println(ch + "" + ch2++);}
}