Kob*_*bek 0 c# arrays sorting stack return-type
我最近进入了C#,我试图了解一下Stacks.我想尝试对堆栈进行排序,首先将其转换为数组,但我得到了一个奇怪的错误.
这是我的代码:
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()));
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我的代码的最后一部分(最后一行):
参数1:无法从'void'转换为'bool'
我想知道为什么会发生这种情况,当Array.Sort()需要一个数组作为参数时,我传递number.ToArray(),它应该从数字堆栈中返回一个新的数组.
由于Array.Sort返回void而不是预期的数组,因此出现错误.
另外,Console.WriteLine获取输入并将其打印到Console,它无法获取数组并打印该数组,它只会打印出实际的数组地址.
为了打印数组(或任何集合),您应该使用string.Join,它接受一个集合并返回由分隔符分隔的字符串.
numbers.OrderBy(num => num).ToArray();
Run Code Online (Sandbox Code Playgroud)
例:
public static void Main()
{
var numbers = new Stack<int>();
numbers.Push(4);
numbers.Push(1);
numbers.Push(2);
var numbersSorted = numbers.OrderBy(num => num).ToArray();
Console.WriteLine(string.Join(", ", numbersSorted));
}
Run Code Online (Sandbox Code Playgroud)
输出: 1,2,4
| 归档时间: |
|
| 查看次数: |
1990 次 |
| 最近记录: |