Не возвращается переменная в методе C#
Здравствуйте сообщество!
Задуманно, чтобы метод maxim выдавал максимальное число в векторе, а переменная "maksik" возвращаемая.
Выдаёт ошибку:
Ошибка CS0127 Так как "Program.maxim(int[], int, int)" возвращает значение void, поэтому после ключевого слова return не должно присутствовать выражение объекта.
Часть кода:
static void maxim(int[]a, int n, int maksik)
{
for (int i = 0; i < n; i++)
{
maksik = a[i];
if (a[i] == a.Max()) a[i] = maksik;
return maksik;
}
}
Подсвечивает красным return.
Если убрать название переменной и просто оставить return, то будет выведен полностью массив, а не один элемент.
Полный код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace work_17
{
internal class Program
{
static void maxim(int[]a, int n, int maksik)
{
for (int i = 0; i < n; i++)
{
maksik = a[i];
if (a[i] == a.Max()) a[i] = maksik;
return maksik;
}
}
static void one(int[]a, int n) // Переставить первый и максимальный элемент вектора
{
for (int i = 0; i < n; i++)
{
int maksik = a[i];
if (a[i] == a.Max())
{
a[i] = a[0];
a[0] = maksik;
}
}
}
static void two(int[]a, int n)
{
}
static void Print(int[]a) // выводит вектор на экран
{
foreach (int elem in a)
{
Console.Write("{0}\t", elem);
}
Console.WriteLine();
}
static void Input(int[]a, int n) // формирует массив
{
Random rnd = new Random();
for (int i = 0; i < n; i++)
{
a[i] = rnd.Next(-100, 100);
}
}
static void four(int[] a, int n)
{
int mx, mn;
for (int i = 0; i < n; i++)
{
if (a[i] == a.Max())
{
mx = a[i];
}
}
}
static void Main(string[] args) // Главный метод
{
Console.WriteLine("Введите количество элементов векторов (столбцов для матрицы): ");
int n = int.Parse(Console.ReadLine());
Console.WriteLine("Введите количество строк матрицы: ");
int j = int.Parse(Console.ReadLine());
int[] m = new int[n];
int[,] mm = new int [n, j];
Input(m, n);
Console.WriteLine("Изначальный вектор: ");
Print(m);
one(m, n);
Console.WriteLine("Меняем местами максимальный элемент с первым....");
Print(m);
Console.WriteLine("Максимальное число: ");
maxim(m, n);
Print(m);
//two (m, n);
//Print(m);
Console.ReadKey();
}
}
}
Не судите строго, я новичок в C# и вообще в программировании.
Ответы (1 шт):
Нужно void заменить на int, чтобы сказать методу что именно оно будет возвращаемым типом. А также в конце метода придётся дописать какой-нибудь return 0, чтобы вернуть значение int-a, иначе его будет не хватать. Так вы обозначаете, что данный метод результатом своей работы вернет (отдаст обратно,в место своего вызова) значение с типом данных int.