在下面的代码中,我试图打印出0以下数字的位置。 我可以将这些数字打印得很好,但无法弄清楚如何打印出来的位置。
它编译得很好,但是当我运行它时会输出第一个数字,然后崩溃。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Tutorial_3
{
class Q8FourByFiveArray
{
static void Main(string[] args)
{
int[,] numbers = new int[4, 5] { {1, -2, 6, -9, 8}, {-3, 4, -3, 6, 7}, {5, 6, -9, 0, -2}, {4, 5, -1, -7, 1}};
//search the array for numbers less than 0. Then print their positions
for (int r = 0; r < 4; r++)
{
for (int c = 0; c < 5; c++)
{
if (numbers[r, c] < 0)
{
Console.WriteLine(numbers.GetValue(r, c));
Console.WriteLine("Row: " + Array.IndexOf(numbers, r, c));
Console.WriteLine("Column: " + Array.IndexOf(numbers, c));
}
}
Console.WriteLine(" ");
}
}
}
}
答案 0 :(得分:2)
您不需要Array.IndexOf
,您已经在嵌套循环中拥有行和列。使用它们。
int[,] numbers = new int[4, 5] { { 1, -2, 6, -9, 8 }, { -3, 4, -3, 6, 7 }, { 5, 6, -9, 0, -2 }, { 4, 5, -1, -7, 1 } };
//search the array for numbers less than 0. Then print their positions
for (int r = 0; r < 4; r++)
{
for (int c = 0; c < 5; c++)
{
if (numbers[r, c] < 0)
{
Console.Write(numbers.GetValue(r, c)); // better to use numbers[r,c]
Console.Write(" Row: " + r);
Console.WriteLine(" Column: " +c);
}
}
Console.WriteLine(" ");
}
或者只有一行输出:
Console.WriteLine("Number: {0}, Row: {1}, Column: {2}", numbers.GetValue(r, c), r, c);
答案 1 :(得分:1)
改变这个:
Console.WriteLine("Row: " + Array.IndexOf(numbers, r, c));
Console.WriteLine("Column: " + Array.IndexOf(numbers, c));
对此:
Console.WriteLine("Row: " + r.ToString());
Console.WriteLine("Column: " + c.ToString());
答案 2 :(得分:0)
所以我可能会对问题是什么感到有些困惑,但据我所知,您只想打印r
和c
的值。相反,你正在做这个IndexOf
的东西,这些东西实际上应该是你正在搜索的值,它返回它的索引,所以使用通常是不正确的。
基本上改变了这个;
if (numbers[r, c] < 0)
{
Console.WriteLine(numbers.GetValue(r, c));
Console.WriteLine("Row: " + Array.IndexOf(numbers, r, c));
Console.WriteLine("Column: " + Array.IndexOf(numbers, c));
}
到此;
if (numbers[r, c] < 0)
{
Console.WriteLine(numbers.GetValue(r, c));
Console.WriteLine("Row: " + r.ToString());
Console.WriteLine("Column: " + c.ToString());
}
答案 3 :(得分:0)
Array.IndexOf
可用于一维数组。在此代码中,无需使用它。只需使用r
和c
作为元素的位置。
答案 4 :(得分:0)
Array.IndexOf()
实际上并没有按照您的想法行事。它会扫描第一个参数,以查找与第二个参数匹配的第一个值,从第三个参数开始。