【发布时间】:2021-04-27 17:36:50
【问题描述】:
问题:我正在控制台应用程序中重新创建 Battleship,并且用户输入的格式为“字母数字字母数字”(A1E1)。程序需要判断第二个字母在加或减 4 时的索引是否与第一个字母相同,以验证用户输入的船型是否具有可接受的长度。但是,当我的代码运行时,索引超出了数组的范围。
例如,巡洋舰的长度为 5 个空格。因此,要水平放置 Cruiser,数字必须相同,并且字母必须在 validInputs 数组中彼此相距 4 个元素。
某些输入的工作,例如:A3E3 工作,但是,E3A3 会超出范围。
public static char[] validInputs = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', '1', '2', '3', '4', '5', '6', '7', '8', '9', 't' };
if (placementInput[1] - placementInput[3] == 0)
{
char validInputCheck = placementInput[2];
// Finds index of the 2nd letter in valid inputs
int validInputIndex = Array.IndexOf(validInputs, validInputCheck);
// Validates that the 2nd letter is either 4 steps behind or
// ahead of the first letter within the validInputs array.
if (placementInput[0] == validInputs[validInputIndex - 4] ||
placementInput[0] == validInputs[validInputIndex + 4])
{
validationCounter++;
break;
}
【问题讨论】:
-
在尝试访问它们之前,您必须验证
validInputIndex + 4和validInputIndex - 4实际上在数组中的索引范围内。
标签: c# arrays error-handling console-application