なぜコンソールウィンドウは、配列の内容を垂直ではなく水平に印刷しないのですか?
それを変更する方法はありますか?
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]);
}
おそらく配列の印刷に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));
私は提案します:
foreach(var item in array)
Console.Write("{0}", item);
上記のとおり、1つのアイテムがnull
の場合、例外を発生させません。
Console.Write(string.Join(" ", array));
配列がstring[]
であれば完璧です
配列をループし、Write
の代わりにWriteLine
を使用してコンソールにアイテムを書き込むだけです。
foreach(var item in array)
Console.Write(item.ToString() + " ");
アイテムに改行がない限り、1行になります。
...または、ジョン・スキートが言ったように、あなたの質問にもう少し文脈を提供します。
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); // Yuo just need to write the function Write instead of WriteLine
Console.ReadKey();
}
}
}
これは出力です
#C ni nettirw sah edoc sihTedoc fo elpmaxe na si sihT
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();
}
}
}
配列の配列をきれいに印刷する必要がある場合、このような何かが動作する可能性があります 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]]
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++;
}
Console.Writeの使用は、スレッドがコンソールへの書き込みを行う唯一のスレッドである場合にのみ機能します。そうでない場合、出力には、改行やその他の望ましくない文字が挿入される場合とされない場合があります。配列がそのまま印刷されるようにするには、Console.WriteLineを使用して1つの文字列を書き込みます。オブジェクトのほとんどの配列は、.NET 4.0より前に使用可能な非ジェネリックJoinを使用して(型のToString()メソッドに応じて)水平に印刷できます。
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