Почему этот код не работает?

Привет, ребята, я написал этот код и у меня две ошибки.

  1. Недопустимый указатель ранга: ожидаемый ',' или ']'
  2. Невозможно применить индексирование с помощью [] к выражению типа int

Не могли бы вы помочь?

    static void Main(string[] args)
    {
        ArrayList numbers = new ArrayList();

        foreach (int number in new int[12] {10,9,8,7,6,5,4,3,2,1}) //error No.1
        {
            numbers.Add(number);
        }

        numbers.Insert(numbers.Count - 1, 75);
        numbers.Remove(7);
        numbers.RemoveAt(6);

        for(int i=0; i<numbers.Count; i++)
        {
            int number = (int) number[i]; // error No.2
            Console.WriteLine(number);
        }
    }

Этот код не читается. Используйте разметку, доступную для отображения кода.

JesperE 24.10.2008 00:27

Сделайте отступ всего кода четырьмя пробелами, чтобы сделать его более читабельным ...

Drew Noakes 24.10.2008 00:30

@arin, проверьте и убедитесь, что я правильно отформатировал. Похоже, разметка не позволяет сделать 4 уровня отступа ...?

Bill the Lizard 24.10.2008 00:31

Я собираюсь проголосовать против, потому что я уверен, что компилятор уже сказал вам, что было не так.

Isak Savo 24.10.2008 00:37

Арин, можешь ли ты принять ответ, если получишь тот, который тебя удовлетворит Я заметил, что на все ваши вопросы никогда не был выбран ответ. Вам нужно пройти слева от голосования и нажать галочку, и ответ станет зеленым. Хорошего дня :)

Patrick Desjardins 24.10.2008 00:37

Добавлен тег домашнего задания. См. stackoverflow.com/questions/230510/homework-on-stackoverflow

Adam Lassek 24.10.2008 00:43

Извини, Даок, это мой первый день здесь, я сделал то, что ты сказал, спасибо

arin 24.10.2008 00:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
536
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

1 - Вам не нужно указывать длину массива, просто скажите new int []

2 - число - это просто целое число, я думаю, вы пытаетесь получить доступ к числам [i]

Для 1:

foreach (int number in new int[] {10,9,8,7,6,5,4,3,2,1})

Для 2:

int number = (int)numbers[i];

Вы используете number вместо numbers (множественное число).

Вы должны инициализировать массив как

new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };

компилятор установит размер за вас. Но вы делаете это нелегко. Попробуй это:

for (int i = 10; i > 0; i-- )
{
    numbers.Add(i);
}

Если вы используете .Net 3.5, вы также можете использовать System.Linq.Enumerable для создания диапазона:

IEnumerable<int> numbers = Enumerable.Range(1, 10).Reverse();

Он заменил бы ArrayList, что в 3.5 бессмысленно. Поскольку вы только начинаете, поначалу, вероятно, будет легче понять ArrayList, но помните о таких вещах, как Generics и IEnumerables, они очень важны.

Ответ принят как подходящий
using System;
using System.Collections;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            ArrayList numbers = new ArrayList();
            foreach (int number in new int[] { 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 })
            {
                numbers.Add(number);
            }
            numbers.Insert(numbers.Count - 1, 75);
            numbers.Remove(7);
            numbers.RemoveAt(6);
            for (int i = 0; i < numbers.Count; i++)
            {
                int number = (int)numbers[i];
                Console.WriteLine(number);
            }
        }
    }
}

Почему не следующее для №1?

    for (int x = 10; x > 0; --x)
    {
        numbers.Add(number);
    }

Несмотря на то, что это объявлено как int [12] (как очевидное намерение?), Похоже, что мы используем только значения от 10 до 1 включительно. Зачем использовать foreach в этом сценарии, когда for гораздо более ясен в своем предназначении?

Если мы ищем ясности - почему бы не использовать только numbers.AddRange (new int [] {10, ..., 1}? Или, если на то пошло, numbers = new ArrayList (new int [] {10, ..., 1}).

Mark Brackett 24.10.2008 01:59

Арин, смею спросить, почему ты ненавидишь цикл for? В этом случае это не только более понятно, но, вероятно, более эффективно, чем создание нового массива только для использования его для пополнения. Марк, хороший звонок.

John Rudy 24.10.2008 15:00

Другие вопросы по теме