一种在矩阵中搜索Id的方法-输出有问题



我是编程新手,我正在尝试创建一个方法,允许我在[10,4]矩阵中搜索Id,但如果不使用嵌套的fors和if and else语句,我就无法做到这一点。这个问题与输出有关,我知道结构不正确,但由于我不知道还能做什么,我正在努力做到这一点:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace menu
{
class Program
{
enum header { id, name, surname, addres };
public static int id = 1;
static void Main(string[] args)
{
string[,] matrix = new string[10, 4];
insertStudent(matrix);
idSearch(matrix);
Console.ReadKey();
}

static int generateId()
{
return id++;
}
static void insertStudent(string[,] matrix)
{
int n = generateId();
matrix[n - 1, 0] = Convert.ToString(n);
for (int i = 1; i < matrix.GetLength(1); i++)
{
do
{
Console.WriteLine($"Insert {Enum.GetName(typeof(header), i)}");
matrix[n - 1, i] = Console.ReadLine();
}
while (String.IsNullOrEmpty(matrix[n - 1, i]));
}
}
static void idSearch(string[,] matrix)
{
int idChosen=0;
Console.WriteLine($"Insert ID you want to visualize:");
int.TryParse(Console.ReadLine(), out idChosen);
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{

if (matrix[i, 0] == Convert.ToString(idChosen))
{
Console.WriteLine(matrix[i, j]);
}
else
{
Console.WriteLine("The chosen ID does not exist");
}
}
}
}




}
}

现在,每次检查矩阵中的索引时,都会打印"所选ID不存在"。在检查了每个索引之后,您希望将该语句移到循环之外。现在,这个检查实际上表明你的ID不在那个特定的单元格中。为了反映这一点,我稍微修改了您的代码。我还将您的支票固定在matrix[i,j]而不是matrix[i,0]

也可以使用嵌套的for循环。我不相信C#有任何用于搜索多维数组的内置助手方法。

bool found = false;
for (int i = 0; i < matrix.GetLength(0); i++)
{
for (int j = 0; j < matrix.GetLength(1); j++)
{
if (matrix[i, j] == Convert.ToString(idChosen))
{
//note that this will print your id
Console.WriteLine(matrix[i, j]);
//this would print where it found it
Console.WriteLine("Found at [" + i + "," + j + "]");
found = true;
}
}
}
if (!found)
{
Console.WriteLine("The chosen ID does not exist");
}

相关内容

  • 没有找到相关文章

最新更新