java - 如何在处理过程中重新启动 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`
解决方案
您不需要为此重新启动循环,因为为单词中的每个字符设置单独的循环会非常低效。
解决这个问题的方法是使用一个 java 映射,其中键是字符,值是初始数组中的条目。
只需创建一个类调用WordCoordinatesLocator
(或任何听起来不错的东西)),它将获取您的二维数组并在构造函数中构建 Map 。将地图保存为实例变量,然后公开一个公共方法,例如 getCoordinates(String word),它将访问每个字符的地图并建立您的响应。
如果您得到无效字符,您可能希望抛出异常:原始字母数组中未包含的字符。然后创建一个单元测试来证明它按预期工作。
推荐阅读
- javascript - Javascript匿名函数与无函数
- nativescript - 将 ByteArray 加载到 Android 上的 ImageSource
- php - 数据表 - 我如何使用数组作为 SQL where 子句
- mule - DataWeave 2.0 日期的夏令时
- javascript - 在您自己的网站上共享带有缩略图的链接
- ios - 在 Objective-C 中改变约束
- python - 为什么我的python祝福打印语句不在同一个位置打印?
- python - TensorFlow Optimizer - 自定义梯度问题
- linux - 在linux命令行上将文件移动到匹配的文件夹
- spring - 通过发送电子邮件返回响应(http 状态)需要很长时间