如何在处理过程中重新启动for循环?

时间:2018-12-27 06:16:13

标签: java for-loop

我想重新启动for循环。我有一个作业问题,其中我必须以A到Z的二维数组告诉用户给定单词的坐标(一次输入一个字母)。

例如:如果用户输入单词“ GREAT”,则程序必须在锯齿状数组中打印每个字母位置的坐标。 (G-1,1,R-3,2,E-2,1,A-0,0,T-3,4)

使用嵌套的for循环,我可以打印正向字符(我的意思是,单词“ GOT”具有从A到Z的字符),如果我尝试使用“ GET”(在这里,在“ G”之后, 'E'向后退),程序在'G'之后停止。因此,我想如果可以在打印每个字母的坐标后重新启动循环,那么我可以打印所有坐标。

`//2D array
char a[][] = {{'A','B','C','D','E'},{'F','G','H','I','J'},{'K','L','M','N','O'},{'P','Q','R','S','T'},{'U','V','W','X','Y'},{'Z'}}; 
//if the user given word is GET,
//then the output should be
//G-1,1
//E-0,5
//T-3,5`

3 个答案:

答案 0 :(得分:1)

您无需为此重新启动循环,因为单词中每个字符都有单独的循环是非常低效率的。

解决此问题的方法是使用Java映射,其中键是字符,值是初始数组中的条目。

只需创建一个类调用WordCoordinatesLocator(或听起来很不错的类),即可使用您的二维数组并在构造函数中构建Map。将地图另存为实例变量,然后公开一个名为getCoordinates(String word)的公共方法,该方法将访问每个字符的地图并建立响应。

如果您收到无效字符(原始字母数组中未包含的字符),则可能要引发异常。 然后创建一个单元测试以证明它按预期工作。

答案 1 :(得分:0)

有几种方法可以做到这一点。 一种简单的方法是您可以搜索单词中的每个字符并打印其位置。 如果检查每个字符,为什么需要重新启动循环。 您可以如上所述使用Java映射,甚至可以使用哈希表,但这不是一个大任务。
可以帮助您的简单代码。

        String word = "GET";
        char a[][] = {{'A','B','C','D','E',' '},{'F','G','H','I','J',' '},{'K','L','M','N','O',' '},{'P','Q','R','S','T',' '},{'U','V','W','X','Y',' '},{'Z',' ',' ',' ',' ',' '}};
        int l=0;
        while(l<word.length()) {
            for (int i = 0 ; i < 6; i++)
                for(int j = 0 ; j < 6 ; j++)
                    if (word.charAt(l) == a[i][j])
                        System.out.println(i + " " + j);
            l++;
        }

您甚至可以使用switch或多个,否则大声笑...

答案 2 :(得分:0)

由于最后一行是特殊的,它仅包含一个字符Z,因此我们从二维数组中删除,则该数组将为5 * 5数组。

public static void print(char[][] array, String input) {
        if (null == input || input.isEmpty()) {
            return;
        }
        for (int i = 0; i < input.length(); i++) {
            char var0 = input.charAt(i);
            // Z is special we check first
            if (var0 == 'Z') {
                System.out.println("Z-6,1");
                continue;
            }
            // Traversing the array to find coordinate
            for (int row = 0; row < 5; row++) {
                for (int clo = 0; clo < 5; clo++) {
                    char var1 = array[row][clo];
                    if (var0 == var1) {
                        System.out.println(var0 + "-" + row + "," + clo);
                        break;
                    }
                }
            }
        }
    }