编写一个C#控制台应用程序来创建一个用户定义的矩阵,该矩阵不包含任何行和列和值 &安培;找到最低数字&如果用户输入的数字不是数字,它只接受数字,它警告用户只能输入数字。
对于Ex:
输入行数:(系统)
2(用户)
输入列数:(系统)
2(用户),
输入行值1:20
输入行值2:4
输入列值1:30
输入列值2:20
最低编号是:4
请帮我解决这个问题。
答案 0 :(得分:0)
首先你需要一个获取动态值的创建矩阵;然后需要两个for循环:i,j;然后采取一个临时变量;将第一个值存储在给定数组中,然后将数组中的所有值与temp变量进行比较。
答案 1 :(得分:0)
将其置于“主要”方法之外,以确保用户提供一个数字。
private static int GetNumber(string request)
{
bool succeeded = false;
Console.WriteLine(request);
string reply="";
while(!succeeded)
{
reply = Console.ReadLine();
try
{
int.Parse(reply);//Attempt to convert "reply" into an integer.
succeeded = true;
}
catch
{
Console.WriteLine(request+" (make it a number)");
}
}
return int.Parse(reply);
}
然后将其用作主要方法。
public static void Main()
{
int rows = GetNumber("Enter no of Rows:");
int columns = GetNumber("Enter no of Columns:");
int[,] matrix = new int[rows,columns];
for(int row = 0; row < rows; row++)
{
for (int column = 0; column < columns; column++)
{
matrix[row,column] = GetNumber("Enter value for sector Row: "+(row+1)+" Column: "+(column+1));
}
}
int smallestnumber = matrix[0,0];
for(int row = 0; row < rows; row++)
{
for (int column = 0; column < columns; column++)
{
if(matrix[row,column] < smallestnumber)
{
smallestnumber = matrix[row,column];
}
}
}
Console.WriteLine("Lowest number is: "+smallestnumber);
}
我在这里采取了自由,因为你的例子是“输入行值1 ...输入列值2”,但矩阵中的每个单独的值都将由行和列表示。
答案 2 :(得分:0)
嗯,你没有表明你遇到麻烦的特定部分,但似乎检查int的用户输入可能很棘手。以下是我检查用户输入的值是否为数字的方法:
string row;
Console.WriteLine("Enter number of rows");
while (Int32.TryParse(Console.ReadLine(), out row) == false)
{
Console.WriteLine("Please enter a numeric value");
}
Console.WriteLine("You selected {0} rows", row);
我也会使用像int类型的泛型列表而不是矩阵,因为你不知道数组将包含多少元素。通用列表允许您将项目添加到列表中,没有任何问题,您甚至可以使用
int max = MyList.Min();
找到最简单的数字。