2014-01-20 177 views
0

我想做一個基本的控制檯應用程序,允許用戶輸入3個名稱,然後按字母順序排序。這不起作用。Visual Basic字符串數組按字母順序排序

這是我的代碼。

Dim names(2) As String 
    Console.WriteLine("Name 1 ?") 
    names(0) = Console.ReadLine 
    Console.WriteLine("Name 2 ?") 
    names(1) = Console.ReadLine 
    Console.WriteLine("Name 3 ?") 
    names(2) = Console.ReadLine 
    Array.Sort(names) 

    Console.WriteLine("Your names are:" & names) 

控制檯不打印代碼。

回答

1

嘗試這樣的事情...

Dim names(2) As String 
Console.WriteLine("Name 1 ?") 
names(0) = Console.ReadLine 
Console.WriteLine("Name 2 ?") 
names(1) = Console.ReadLine 
Console.WriteLine("Name 3 ?") 
names(2) = Console.ReadLine 
Array.Sort(names) 
Console.WriteLine("Your names are:") 
For x = 0 To 2 
    Console.WriteLine(names(x)) 
Next x 
+0

或:names.ToString – Zam

+0

names.ToString不起作用。 –

+0

這工作完美!謝謝。 – LyanR

3

使用LINQ:

Dim namesSorted() As String = names.OrderBy(Function(x) x).ToArray 

通過這種方法,您可以更改排序標準,以任何你想要的,即字長,上升/下降。打印結果:

Console.WriteLine("Your names are:" & String.Join(","c, namesSorted)) 

另外,我建議你使用列表,而不是,那麼你不僅限於3名,你不需要知道你有多少名是處理提前。 LINQ語法將是相同的。

+0

感謝您的協助,是否可以使用IF語句重新創建相同的函數? – LyanR

+0

@ user3215444:一切皆有可能,但爲什麼你想要經歷頭痛? – Neolisk

+0

非常真實,我假設它不值得每個字符串與IF語句進行比較。 – LyanR