josmer benjamin suero sencion Ответов: 1

Я иду пушечным преобразованием типа "int" в "int[]" в этом стеке


Привет, мне нужно сделать программу на C#, которая запрашивает у пользователя 5 чисел и печатает их в обратном порядке, я вроде как использовал массив, но он должен работать со стеком, это код, и ошибка будет выделена

public class Stack_01
{
    public static void Main()
    {
        int[] number = new int [5];

        Stack miPila = new Stack();
        for (int i = 0; i < numero.Length; i++)
        {
            Console.WriteLine("Type a number{0}:", i+1);
            number[i] = int.Parse(Console.ReadLine());

        }

        Console.WriteLine();
        Array.Reverse(number);
        Console.WriteLine("these are your numbers:\n");
        for (int i = 0; i < numero.Length; i++)
        {
            numero = (int)miPila.Pop();
            Console.WriteLine(number[i]);
        }

   
       
    }

}


Что я уже пробовал:

Ну басовито попытался добавить преобразование в int 32, я видел на StackOverun, что это могло бы сработать, но не сработало.

Nelek

Пара вещей, которые приходят на первый взгляд...
Вы объявляете "number", но затем используете "numero.length" в цикле.
Вы объявляете стек "miPila", но никогда не "толкаете" что-либо внутри него, прежде чем использовать "pop"
Если вы введете букву и нажмете enter, ваша программа не будет работать должным образом, потому что вы назначаете вывод int.parse напрямую, вместо того чтобы сначала проверить, является ли это число.

josmer benjamin suero sencion

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

josmer benjamin suero sencion

Извините, что отвечаю сейчас, не видел комментария.

josmer benjamin suero sencion

как я могу протолкнуть ответ, который дает мне пользователь, в "miPila", чтобы я мог показать его позже?

josmer benjamin suero sencion

Я пытался это исправить, но теперь он не позволяет мне добавлять значения:

открытый класс Stack_01
{
публичный статический пустота главный()
{
//int[] numero = новый int[5];

Stack numero = новый стек(5);

for (int i = 0; i < numero.Граф; i++)
{
Приставка.WriteLine("Ingrese un numero{0}:", i + 1);
нумеро.толчок(5);

}

//Приставка.метод WriteLine();
// Массив.Реверс(цифра);
Приставка.WriteLine("Estos son tus numeros:\n");
for (int i = 0; i < numero.Граф; я--)
{
Приставка.WriteLine(numero.Pop());
}

//for (int i = 0; i < miPila.Граф; i++)
//{
// numero = (int)miPila.Pop();
// Консоль.WriteLine(число);
//}

}

}

1 Ответов

Рейтинг:
2

BillWoodruff

Вы используете систему общего назначения.Коллекции.Стек, который содержит объекты. Используйте универсальную систему.Коллекции.Generic.Stack<T> [^]:

Stack<int> yourStack = new Stack<int>(5);
Поскольку стек является перечислимым (Массивоподобным), вы можете считывать значения с помощью индексов и выполнять итерацию, не удаляя их с помощью цикла for или foreach.

Предложение: используйте Int32.TryParse, чтобы убедиться, что пользователь ввел Int: [^]


josmer benjamin suero sencion

У меня была обновленная версия кода, который я опубликовал ранее, и я добавил ваше предложение, но он показывает только числа от 4 до 0, как будто он не сохраняет числа в стеке, чтобы показать их позже, это код:
использование системы;
использование системы.Коллекции;
использование системы.Коллекции.Общий;

публичный класс Ejemplo_11_02a
{
публичный статический пустота главный()
{


Stack<int> yourStack = новый стек<int>(5);

for (int i = 0; i < 5 ; i++)
{
Приставка.WriteLine("Ingrese un numero {0}:", i + 1);
твой стек.Push(i); Int32.TryParse(Консоль.Линия чтения();
}


Приставка.WriteLine("Estos son tus numeros:\n");
for (int i = 0; i < yourStack.Граф; я--)
{
//Приставка.WriteLine("Estos son tus numeros:\n");
// Приставка.WriteLine(numero.Pop());
Приставка.WriteLine(yourStack.Pop());


}


Приставка.ReadKey();
}

}

BillWoodruff

В этом коде вы не используете Int32.Попробуй правильно разобрать. Если вы нажимаете значения 0~4 в стеке, у вас есть пять значений.

Поместите точки останова в свой код и сделайте один шаг через него: внимательно изучите содержимое стека и изучите ссылки, которые я разместил для вас.

Важно то, что вы учитесь отлаживать.