如何水平打印数组的内容?

为什么控制台窗口不水平而不是垂直打印数组内容?

有办法改变吗?

如何使用 Console.WriteLine()水平显示数组内容而不是垂直显示数组内容?

例如:

int[] numbers = new int[100]
for(int i; i < 100; i++)
{
numbers[i] = i;
}


for (int i; i < 100; i++)
{
Console.WriteLine(numbers[i]);
}
273614 次浏览

只需循环遍历数组并使用 Write而不是 WriteLine将项目写入控制台:

foreach(var item in array)
Console.Write(item.ToString() + " ");

只要你的项目没有任何换行符,这将产生一个单一的行。

或者像 Jon Skeet 说的,为你的问题提供更多的背景信息。

您可能正在使用 Console.WriteLine打印数组。

int[] array = new int[] { 1, 2, 3 };
foreach(var item in array)
{
Console.WriteLine(item.ToString());
}

如果你不想让每一个项目都在一个单独的行使用 Console.Write:

int[] array = new int[] { 1, 2, 3 };
foreach(var item in array)
{
Console.Write(item.ToString());
}

string.Join<T>(在.NETFramework4或更高版本) :

int[] array = new int[] { 1, 2, 3 };
Console.WriteLine(string.Join(",", array));

我建议:

foreach(var item in array)
Console.Write("{0}", item);

如上所述,除非它不引发异常,如果一个项目是 null

Console.Write(string.Join(" ", array));

如果数组是 string[],那么它将是完美的。

如果需要对数组数组进行漂亮的打印,可以使用下面的代码: 美丽的打印数组在.NET C #

public string PrettyPrintArrayOfArrays(int[][] arrayOfArrays)
{
if (arrayOfArrays == null)
return "";


var prettyArrays = new string[arrayOfArrays.Length];


for (int i = 0; i < arrayOfArrays.Length; i++)
{
prettyArrays[i] = "[" + String.Join(",", arrayOfArrays[i]) + "]";
}


return "[" + String.Join(",", prettyArrays) + "]";
}

示例输出:

[[2,3]]


[[2,3],[5,4,3]]


[[2,3],[5,4,3],[8,9]]
int[] n=new int[5];


for (int i = 0; i < 5; i++)
{
n[i] = i + 100;
}


foreach (int j in n)
{
int i = j - 100;


Console.WriteLine("Element [{0}]={1}", i, j);
i++;
}
public static void Main(string[] args)
{
int[] numbers = new int[10];


Console.Write("index ");


for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = i;
Console.Write(numbers[i] + " ");
}


Console.WriteLine("");
Console.WriteLine("");
Console.Write("value ");


for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = numbers.Length - i;
Console.Write(numbers[i] + " ");
}


Console.ReadKey();
}
foreach(var item in array)
Console.Write(item.ToString() + "\t");
namespace ReverseString
{
class Program
{
static void Main(string[] args)
{
string stat = "This is an example of code" +
"This code has written in C#\n\n";


Console.Write(stat);


char[] myArrayofChar = stat.ToCharArray();


Array.Reverse(myArrayofChar);


foreach (char myNewChar in myArrayofChar)
Console.Write(myNewChar); // You just need to write the function
// Write instead of WriteLine
Console.ReadKey();
}
}
}

这是输出:

#C ni nettirw sah edoc sihTedoc fo elpmaxe na si sihT
private int[,] MirrorH(int[,] matrix)               //the method will return mirror horizintal of matrix
{
int[,] MirrorHorizintal = new int[4, 4];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 4; j ++)
{
MirrorHorizintal[i, j] = matrix[i, 3 - j];
}
}
return MirrorHorizintal;
}

使用控制台。只有当线程是唯一写入控制台的线程时,才能写入,否则您的输出可能会与其他可能插入或不插入换行符的输出以及其他不需要的字符穿插在一起。若要确保数组完整打印,请使用 Console。WriteLine 编写一个字符串。大多数任何对象数组都可以水平打印(取决于类型的 ToString ()方法) ,使用之前提供的非泛型联接。NET 4.0:

        int[] numbers = new int[100];
for(int i= 0; i < 100; i++)
{
numbers[i] = i;
}


//For clarity
IEnumerable strings = numbers.Select<int, string>(j=>j.ToString());
string[] stringArray = strings.ToArray<string>();
string output = string.Join(", ", stringArray);
Console.WriteLine(output);


//OR


//For brevity
Console.WriteLine(string.Join(", ", numbers.Select<int, string>(j => j.ToString()).ToArray<string>()));

下面的解决方案是最简单的一个:

Console.WriteLine("[{0}]", string.Join(", ", array));

输出: [1, 2, 3, 4, 5]

另一个简短的解决办法是:

Array.ForEach(array,  val => Console.Write("{0} ", val));

输出: 1 2 3 4 5。或者,如果需要添加 ,,请使用以下代码:

int i = 0;
Array.ForEach(array,  val => Console.Write(i == array.Length -1) ? "{0}" : "{0}, ", val));

输出: 1, 2, 3, 4, 5

我已经写了一些扩展来满足几乎所有的需要。
分离器字符串,格式IFormatProvider需要填充扩展重载。

例如:

var array1 = new byte[] { 50, 51, 52, 53 };
var array2 = new double[] { 1.1111, 2.2222, 3.3333 };
var culture = CultureInfo.GetCultureInfo("ja-JP");


Console.WriteLine("Byte Array");
//Normal print
Console.WriteLine(array1.StringJoin());
//Format to hex values
Console.WriteLine(array1.StringJoin("-", "0x{0:X2}"));
//Comma separated
Console.WriteLine(array1.StringJoin(", "));
Console.WriteLine();


Console.WriteLine("Double Array");
//Normal print
Console.WriteLine(array2.StringJoin());
//Format to Japanese culture
Console.WriteLine(array2.StringJoin(culture));
//Format to three decimals
Console.WriteLine(array2.StringJoin(" ", "{0:F3}"));
//Format to Japanese culture and two decimals
Console.WriteLine(array2.StringJoin(" ", "{0:F2}", culture));
Console.WriteLine();


Console.ReadLine();

延伸:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Extensions
{
/// <summary>
/// IEnumerable Utilities.
/// </summary>
public static partial class IEnumerableUtilities
{
/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StringJoin<T>(this IEnumerable<T> Source)
{
return Source.StringJoin(" ", string.Empty, null);
}


/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StrinJoin<T>(this IEnumerable<T> Source, string Separator)
{
return Source.StringJoin(Separator, string.Empty, null);
}


/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StringJoin<T>(this IEnumerable<T> Source, string Separator, string StringFormat)
{
return Source.StringJoin(Separator, StringFormat, null);
}


/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StringJoin<T>(this IEnumerable<T> Source, string Separator, IFormatProvider FormatProvider)
{
return Source.StringJoin(Separator, string.Empty, FormatProvider);
}


/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StringJoin<T>(this IEnumerable<T> Source, IFormatProvider FormatProvider)
{
return Source.StringJoin(" ", string.Empty, FormatProvider);
}


/// <summary>
/// String.Join collection of items using custom Separator, String.Format and FormatProvider.
/// </summary>
public static string StringJoin<T>(this IEnumerable<T> Source, string Separator, string StringFormat, IFormatProvider FormatProvider)
{
//Validate Source
if (Source == null)
return string.Empty;
else if (Source.Count() == 0)
return string.Empty;


//Validate Separator
if (String.IsNullOrEmpty(Separator))
Separator = " ";


//Validate StringFormat
if (String.IsNullOrWhitespace(StringFormat))
StringFormat = "{0}";


//Validate FormatProvider
if (FormatProvider == null)
FormatProvider = CultureInfo.CurrentCulture;


//Convert items
var convertedItems = Source.Select(i => String.Format(FormatProvider, StringFormat, i));


//Return
return String.Join(Separator, convertedItems);
}
}
}