首页 > 解决方案 > 如何在处理过程中重新启动 for 循环?

问题描述

我想重新启动我的 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`

标签: javafor-loop

解决方案


您不需要为此重新启动循环,因为为单词中的每个字符设置单独的循环会非常低效。

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

只需创建一个类调用WordCoordinatesLocator(或任何听起来不错的东西)),它将获取您的二维数组并在构造函数中构建 Map 。将地图保存为实例变量,然后公开一个公共方法,例如 getCoordinates(String word),它将访问每个字符的地图并建立您的响应。

如果您得到无效字符,您可能希望抛出异常:原始字母数组中未包含的字符。然后创建一个单元测试来证明它按预期工作。


推荐阅读