@mboze

Имя i не существует в текущем контексте?

Добрый день! Выскакивает такая ошибка в c#: Имя i не существует в текущем контексте
Подскажите пожалуйста, что можно исправить в коде? Сам код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp16
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите n");
            int n = int.Parse(Console.ReadLine());
            int[] A = new int[n];
            Console.WriteLine("Введите массив А");
            for (int i = 0; i < n; i++)
            A[i] = int.Parse(Console.ReadLine());

            int max = A[0];
            for (i = 0; i < n; i++)
                if (A[i] > max) max = A[i];


            Console.Write(A[i] + " ");


            Console.ReadLine();
        }
    }

}
  • Вопрос задан
  • 2118 просмотров
Решения вопроса 1
Casper-SC
@Casper-SC
Программист (.NET)
Не написал в цикле int. Если это "оптимизация", то не нужно заниматься ерундой. Переменная будет видна внутри области видимости, в которой она объявлена, и внутри вложенных областей видимости, так сказать. Снаружи нет.
for (int i = 0; i < arraySize; i++)
{
    // Используй всегда скобки. Вот опыт тебя уже научил, что без них ты получил ошибку.
}


Код должен выглядеть как-то так, без учёта валидации ввода и запроса по новой. Здесь больше про именование переменных и про наличие фигурных скобок у for.
// Program.cs
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введите n");
            int arraySize = int.Parse(Console.ReadLine());

            int[] array = new int[arraySize];
            Console.WriteLine("Введите массив А");

            for (int i = 0; i < arraySize; i++)
            {
                array[i] = int.Parse(Console.ReadLine());
            }

            int max = array[0];
            for (int i = 0; i < arraySize; i++)
            {
                if (array[i] > max) 
                    max = array[i];

                Console.Write(array[i] + " ");
            }
            

            Console.ReadLine();
        }
    }


Ещё бы посоветовал избавиться от стремления написать как можно больше кода в одну строку. Это бессмысленное занятие.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы