我的数据库有两个相关的表:
员工职位:
员工:
(Employee 表中的Position字段是指Employee Position 表中的 position_id 字段)
需要执行一个查询,其中需要按职位显示员工人数。
你应该得到这样的东西:
Директор 1
HR 3
Бухгалтер 2
数字表示员工人数。编译这么简单的请求有困难,需要帮助
任务如下:
编写一个以这种方式连接两个数组的函数:例如,从 [2, 4, 6] 和 ['a', 'b', 'c'] 它将生成 [2, 'a', 4, 'b',6,'c']。那些。使两个数组的元素交替。
使用相同大小的数组执行此操作没有问题:
void ArrCon(string[] Arr, string[] Arr2) // Метод для соединения двух массивов
{
string str = " "; // переменная для соединения символов двух массивов
for (int j = 1; j < Arr2.Length; j++)
{
str += Arr[j];
str += ", ";
str += Arr2[j];
if (Arr2.Length == j + 1)
{
str += ". ";
break;
}
str += ", ";
}
Console.WriteLine("\n---------------------------------------------------------");
Console.WriteLine($"\nСоединение двух массивов: {str}");
}
Console.Write("Введите количество элементов для первого массива: ");
int n = Convert.ToInt32(Console.ReadLine()); // определение количество символов в массиве
string[] arr = new string[n + 1]; // создение массива arr
int i;
Console.WriteLine("Введите элементы для массива: "); // заполнение массива символами
for (i = 1; i <= n; i++)
{
Console.Write($"Элемент {i} = ");
arr[i] = Console.ReadLine();
}
Console.WriteLine();
Console.Write("Массив: ");
for (i = 1; i <= n; i++)
{
Console.Write($"{arr[i]} \t");
}
Console.WriteLine("\n---------------------------------------------------------");
Console.Write("\nВведите количество элементов для второго массива: ");
int n2 = Convert.ToInt32(Console.ReadLine()); // определение количества символов в массиве
string[] arr2 = new string[n2 + 1]; // создание массива arr2
int i2;
Console.WriteLine("Введите элементы для массива: "); // заполнение массива символами
for (i2 = 1; i2 <= n2; i2++)
{
Console.Write($"Элемент {i2} = ");
arr2[i2] = Console.ReadLine();
}
Console.WriteLine();
Console.Write("Массив: ");
for (i2 = 1; i2 <= n2; i2++)
{
Console.Write($"{arr2[i2]} \t");
}
ArrCon(arr, arr2); // проверка
Console.WriteLine("########################################################");
控制台输出:
########################################################
Введите количество элементов для первого массива: 4
Введите элементы для массива:
Элемент 1 = 1
Элемент 2 = 2
Элемент 3 = i
Элемент 4 = e
Массив: 1 2 i e
---------------------------------------------------------
Введите количество элементов для второго массива: 4
Введите элементы для массива:
Элемент 1 = q
Элемент 2 = s
Элемент 3 = 54
Элемент 4 = 333
Массив: q s 54 333
---------------------------------------------------------
Соединение двух массивов: 1, q, 2, s, i, 54, e, 333.
########################################################
但是,我尝试实现连接两个不同大小的数组的功能,例如:{1, 2, 3, 4, 5} 和 {a, n},结果将是:1, a, 2, n, 3, 4, 5 但是 程序开始抛出一个我无法修复的错误:“索引超出数组范围。”
void ArrCon(string[] Arr , string[] Arr2) // Метод для соединения двух массивов
{
string str = " "; // переменная для соединения символов двух массивов
if (Arr.Length > Arr2.Length) //Если размер первого массива превышает размер второго
{
for (int j = 1; j < Arr.Length; j++)
{
str += Arr[j];
str += ", ";
if (j > Arr2.Length) // когда шаг больше размера (ОШИБКА ЗДЕСЬ)
{
for (int f = j + 1; f < Arr.Length; f++)
{
str += Arr[f];
if (Arr.Length == f)
{
str += ". ";
break;
}
str += ", ";
}
}
str += Arr2[j];
str += ", ";
}
Console.WriteLine("\n---------------------------------------------------------");
Console.WriteLine($"\nСоединение двух массивов: {str}");
}
else if (Arr.Length < Arr2.Length) //Если размер второго массива превышает размер первого
{
//по аналогии с первым случаем
}
else if (Arr.Length == Arr2.Length) //Если массивы равны
{
for (int j = 1; j < Arr2.Length; j++)
{
str += Arr[j];
str += ", ";
str += Arr2[j];
if (Arr2.Length == j + 1)
{
str += ". ";
break;
}
str += ", ";
}
Console.WriteLine("\n---------------------------------------------------------");
Console.WriteLine($"\nСоединение двух массивов: {str}");
}
}
错误是指带有以下代码的行:(str += Arr2[j];
在代码本身中,此位置标有注释)。由于某种原因,程序没有看到条件if (j > Arr2.Length)
并继续进一步运行,这当然会报错:
########################################################
Введите количество элементов для первого массива: 5
Введите элементы для массива:
Элемент 1 = 1
Элемент 2 = 2
Элемент 3 = 3
Элемент 4 = 4
Элемент 5 = 5
Массив: 1 2 3 4 5
---------------------------------------------------------
Введите количество элементов для второго массива: 2
Введите элементы для массива:
Элемент 1 = а
Элемент 2 = п
Массив: а п
Необработанное исключение: System.IndexOutOfRangeException: Индекс находился вне границ массива.
程序在下一步停止: 1, a, 2, n, 3,
我寻求帮助来解决这个问题。if (j > Arr2.Length) 条件中的代码也可能不正确,因为 该程序没有进入它,我无法检查这一刻。
这可能是你见过的最愚蠢的问题,但仍然如此。问题是 else 语句在它前面的 if 评估为 true 并被多次打印时触发。我猜它重复多次的原因是什么,但为什么每次都会触发?我可以删除 else 并忘记,因为没有必要显示消息“没有这样的元素”,但这个问题只是困扰。如何实现正确执行?
int[] arr = new int[10];
Random rnd = new Random();
Console.WriteLine("Массив из 10 рандомных элементов:");
for (int i = 0; i < arr.Length; i++)
{
arr[i] = rnd.Next(-200, 200);
Console.Write("{0,4} ", arr[i]);
}
Console.WriteLine("\n-------------------------------------------------------");
Console.WriteLine("Все элементы массива, оканчивающиеся нулем:");
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] % 10 == 0)
Console.Write("{0,4} ", arr[i]);
else
Console.Write("Таких элементов нет");
}
输出到控制台:
Массив из 10 рандомных элементов:
92 -93 194 -166 60 143 -14 -80 -122 47
-------------------------------------------------------
Все элементы массива, оканчивающиеся нулем:
Таких элементов нетТаких элементов нетТаких элементов нетТаких элементов нет 60 Таких элементов нетТаких элементов нет -80 Таких элементов нетТаких элементов нет
需要随机填充15个元素的数组:用实值x(22 <= x < 23),也就是说,据我了解,应该显示类型的数字:22.1、22.4、22.9 .. .
请告诉我如何解决这个问题。我尝试使用 NextDouble 生成器,但它只给出错误。