[英]C# Formatting Long List of Numbers To Be More Compact
Console.WriteLine(" Even Table \n");
int MaxNumber = 100;
int EvenNumbers = 0;
int i;
for (i = 0; i <=MaxNumber; i+=2)
{
if (i % 2 == 0)
{
EvenNumbers = i;
}
Console.Write(EvenNumbers);
}
輸出:
Even Table
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 98 100
我正在制作一個程序,顯示2到100之間的偶數。 我可以顯示偶數,盡管由於Console.Write,輸出的格式是直線的,是否有一種字符串格式可以用來讓輸出顯示每個偶數,但是可以切成新的每隔20行一次? 因此,它看起來像:
1-20
20-40
40-60
等等
與Linq!
台詞更少Linq!
:p
foreach (var even in Enumerable.Range(2, 100).Where(i => i % 2 == 0))
Console.Write(even % 20 != 0 ? even.ToString() + " " : even.ToString() + "\n");
用這個:
for (i = 0; i <=MaxNumber; i+=2)
{
EvenNumbers = i;
Console.Write(EvenNumbers+" ");
if(i%20==0){
Console.WriteLine();
}
}
if (i % 2 == 0)
不需要條件if (i % 2 == 0)
因為您的步驟是2。
作為Luis解決方案的補充,您可以使用以下代碼輕松實現:
foreach (var item in Enumerable.Range(1, 100).Where(o => o % 2 == 0).GroupBy(o => (int)(o / 20.01)))
{
Console.WriteLine(string.Join(" ", item.ToArray()));
}
按int的模2枚舉過濾的'20'循環在group上,並用string.join
將其打印在一行中string.join
如果您希望第一個數字為string.join
需要string.join
,否則以22開頭,42、62 ...
希望這可以幫助
試試下面; 它將也考慮為0; 否則,將隔離0。
Console.WriteLine(" Even Table \n");
int MaxNumber = 100;
int EvenNumbers = 0;
int i;
for (i = 0; i <= MaxNumber; i += 2)
{
if (i % 2 == 0)
{
EvenNumbers = i;
}
Console.Write(" ");
Console.Write(EvenNumbers);
if (i % 20 == 0 && i>0)
{
Console.WriteLine();
}
}
這是使用Enumerable.Range
和String.Join
的另一種方法:
int MaxNumber = 100;
// create a list of all even numbers
List<int> even_list = Enumerable.Range(0, MaxNumber+1).Where(x => x % 2 == 0).ToList();
// for the amount of numbers to be displayed in a line
int numbers_in_single_line = 10
for (int i = 1; i <= even_list.Count; i += numbers_in_single_line)
{
Console.WriteLine(String.Join(" ", even_list.Skip(i).Take(numbers_in_single_line )));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.