我试图对某些值进行排序并将它们放入2D数组中,但我一直认为数组中的所有位置都是0。
我的代码看起来有点像这样,这是短版本。重要的是" kategori"数组和我想要做的是在每个特定位置ex [0,a]填充数组,其值为y。
class Program
{
struct Säljare
{
public int artiklar;
}
static void Main(string[] args)
{
Säljare[] s = new Säljare[6];
for (int x = 0; x <= 5; x++)
{
Console.Write("Antal sålda artiklar: ");
s[x].artiklar = int.Parse(Console.ReadLine());
}
Console.WriteLine(s.Length);
int[,] kategori = new int[2,6];
int a = 0;
int b = 0;
int y = 0;
while (y < s.Length)
{
if (s[y].artiklar < 50)
{
kategori[0, a] = y;
a++;
}
else if (50 <= s[y].artiklar)
{
kategori[1, b] = y;
b++;
}
y++;
}
Console.WriteLine("Antal");
int z = 0;
for (int x = 0; x < a; x++)
{
kategori[0, x] = z;
Console.WriteLine(s[z].artiklar);
}
for (int x = 0; x < b; x++)
{
kategori[1, x] = z;
Console.WriteLine(s[z].artiklar);
}
}
}
答案 0 :(得分:2)
根据您的修改: 问题在于你从不修改z。它始终保持为0(这会导致您仅使用0填充kategori数组)。请检查以下代码。如果您打算打印kategori,请使用我的编辑。
using System;
namespace ConsoleTest
{
class Program
{
struct Säljare
{
public int artiklar;
}
static void Main(string[] args)
{
Säljare[] s = new Säljare[6];
for (int x = 0; x <= 5; x++)
{
Console.Write("Antal sålda artiklar: ");
s[x].artiklar = int.Parse(Console.ReadLine());
}
Console.WriteLine(s.Length);
int[,] kategori = new int[2, 6];
int a = 0;
int b = 0;
int y = 0;
while (y < s.Length)
{
if (s[y].artiklar < 50)
{
kategori[0, a] = y;
a++;
}
else if (50 <= s[y].artiklar)
{
kategori[1, b] = y;
b++;
}
y++;
}
//Use this to print kategori
for (a = 0; a < 2; a++)
{
for (b = 0; b < 6; b++)
{
Console.Write("{0}\t", kategori[a, b]);
}
Console.WriteLine();
}
Console.WriteLine("Antal");
int z = 0;
for (int x = 0; x < a; x++)
{
kategori[0, x] = z; //z is always 0
Console.WriteLine(s[z].artiklar);
}
for (int x = 0; x < b; x++)
{
kategori[1, x] = z; //z is always 0
Console.WriteLine(s[z].artiklar);
}
Console.ReadKey();
}
}
}