Как печатать содержимое массива по горизонтали?
Почему консольное окно не печатает содержимое массива горизонтально, а не вертикально?
Есть ли способ изменить это?
Как я могу отображать содержимое моего массива горизонтально, а не вертикально, с 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]);
}
Ответы
Ответ 1
Вероятно, вы используете 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>
(в .NET Framework 4 или новее):
int[] array = new int[] { 1, 2, 3 };
Console.WriteLine(string.Join(",", array));
Ответ 2
Я бы предложил:
foreach(var item in array)
Console.Write("{0}", item);
Как написано выше, кроме него не возникает исключение, если один элемент null
.
Console.Write(string.Join(" ", array));
был бы идеальным, если массив является string[]
Ответ 3
Просто проведите по массиву и напишите элементы на консоль, используя Write
вместо WriteLine
:
foreach(var item in array)
Console.Write(item.ToString() + " ");
Пока ваши элементы не имеют разрывов строк, это приведет к созданию одной строки.
... или, как сказал Джон Скит, предоставит немного больше контекста вашему вопросу.
Ответ 4
foreach(var item in array)
Console.Write(item.ToString() + "\t");
Ответ 5
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); // Yuo just need to write the function Write instead of WriteLine
Console.ReadKey();
}
}
}
Это вывод
#C ni nettirw sah edoc sihTedoc fo elpmaxe na si sihT
Ответ 6
Если вам нужно довольно печатать массив массивов, что-то вроде этого может работать
http://aaron-hoffman.blogspot.com/2013/11/pretty-print-array-of-arrays-in-net-c.html
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]]
Ответ 7
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++;
}
Ответ 8
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();
}
}
}
Ответ 9
Использование Console.Write работает только в том случае, если поток является единственным потоком, записываемым в Консоль, иначе ваш вывод может быть перемежен с другим выходом, который может или не может вставлять новые строки, а также другие нежелательные символы. Чтобы ваш массив был напечатан без изменений, используйте Console.WriteLine для записи одной строки. Большинство объектов массива могут быть напечатаны горизонтально (в зависимости от типа ToString()) с использованием не-generic Join, доступного до .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>()));
Ответ 10
Ниже приведено простейшее решение
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
Ответ 11
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;
}