Ich habe vor kurzem in C# und ich versuchte, etwas über Stacks zu lernen. Ich wollte versuchen, einen Stapel zu sortieren, indem ich ihn zuerst in ein Array umwandelte, aber ich bekam einen seltsamen Fehler.C# einen Stapel in ein Array konvertieren und sortieren
ist hier mein Code:
using System;
using System.Collections.Generic;
class Program
{
public static Stack<int> numbers = new Stack<int>();
static void Main(string[] args)
{
string[] input = Console.ReadLine().Split(' ');
int n = int.Parse(input[0]);
int s = int.Parse(input[1]);
int x = int.Parse(input[2]);
input = Console.ReadLine().Split(' ');
for (int i = 0; i < n; i++)
{
numbers.Push(int.Parse(input[i]));
}
for (int i = 0; i < s; i++)
{
numbers.Pop();
}
if (numbers.Count == 0)
Console.WriteLine(0);
else if (numbers.Contains(x))
Console.WriteLine("true");
else
Console.WriteLine(Array.Sort(numbers.ToArray()));
}
}
ist mein Problem am letzten anderen Teil meines Codes (letzte Zeile):
Argument 1: kann nicht von 'Leere' zu ‚Bool konvertieren '
ich habe mich gefragt, warum dies geschieht, wenn Array.Sort()
, ein Array als Parameter erfordert, und ich pass number.ToArray()
, die eine neue Arra zurückkehren sollte y aus den Zahlen Stack.
Sie sollten keinen Stapel sortieren. Es untergräbt den gesamten Stack-Zweck. –
'void' Methoden geben nichts zurück, so dass Sie es nicht in einer Methode als Argument verwenden können. Das nächste Problem: Sie können nicht 'Console.WriteLine' ein ganzes Array. Sie müssen es aufzählen oder 'String.Join (", ", numbers)' verwenden. –
'Array.Sort' liefert nichts zurück. Es sortiert ein Array an Ort und Stelle. –