嵌套循环模式

时间:2016-11-30 04:41:07

标签: java while-loop nested-loops

如果我有n个数字且最大数字是6且最大字母是F,那么最好的方法是什么。

A1 
A2
A3
A4
A5 
A6 
B1
B2 
etc..

int numList = 36; 

         char letter;

        for (int i=1; i<=36; ++i){
            int a = numList/6;
            letter = 'A';
          for (int j=0; j<= a; j++){
            System.out.println(letter +"" + i);
            letter++;
          } 
    }

4 个答案:

答案 0 :(得分:2)

简而言之:

public static void main(String[] args) {
        for (int i = 0; i < 6; i++) {
            char c = (char) (i + 65);
            for (int j = 1; j <= 6; j++) {
                System.out.println("" + c + j);
            }
        }
    }

长期:

你应该练习解决问题的技巧。理解那些小问题会在编程生涯中为你提供很多支持。

解决问题时最重要的技能是分解小问题。首先,您看到输出为:A1 A2 A3 ... B1 B2 B3 ..看起来您可以将每个字符串(即:A1)拆分为2部分:第一部分从A到F,第二部分从1到6.这是应用两个嵌套循环的众所周知的模式。这是伪代码:

public static void main(String[] args) {
    for (char c = A to F) {
        for (int j = 1; j <= 6; j++) {
            System.out.println("" + c + j);
        }
    }
}

你看到了。第一个循环不正确(语法语法)。所以我们应该学习新东西:Java中的char只是一个整数。 (在大多数语言中都是如此,例如C#,javascript ......)但不是全部。所以我在ascii table查找。我看到AF从65,66,67开始......所以我可以用6个元素开始循环。我添加到65的每个元素。例如:

0 -> 65 -> A
1 -> 66 -> B
2 -> 67 -> C

正如您猜测的那样,它成为我上面发布的最终代码。希望这能帮助你:)

答案 1 :(得分:1)

这将是代码:

    int[] array_of_ints; // declare and add the values into it - 1-6
    String[] array_of_alphabtes; // declare and add the values into it - A-F

    for (int i = 0; i < array_of_alphabtes.length; i++) {
        for (int j = 0; j < array_of_ints.length; j++) {
            System.out.println(array_of_alphabtes[i] + "" + array_of_ints[j]);
        }
    }

答案 2 :(得分:1)

更改您的代码:

int numList = 36 / 6;
    char letter = 'A';
    for (int i = 1; i <= numList; ++i) {
        for (int j = 1; j <= numList; j++) {
            System.out.println(letter + "" + j);
        }
        letter++;
    }

答案 3 :(得分:0)

当你有一个嵌套循环时,每次外循环运行时,整个内循环以及外循环体的其余部分都会运行。

这里,每次运行内部for时,内循环的主体执行6次,这意味着你打印6行。

所以你写它的方式:外循环执行36次,每次外循环运行,内循环执行6次。这意味着内循环总共执行36 * 6 = 216次,导致打印216行。那不是你想要的。您希望外循环仅运行6次,因此您的第一个for需要更改。

嵌套循环的另一个特性:内循环比外循环重复得更快。所以在你的情况下,当外循环的第一次迭代运行时,内循环执行6次。 然后我们进入外循环的下一次迭代,内循环执行另外6次;只有然后我们第三次执行外循环,依此类推。

根据您想要的输出,您希望数字的变化速度快于字母。这意味着在内循环中数字需要增加1,并且在外循环中需要增加字母。但是你正在向后做 - 你在内循环中增加字母,在外循环中增加数字(i)。

我不想给你代码 - 我希望我已经给你足够的信息,你可以自己修复它。请在查看别人给你的代码之前尝试这样做。