簡體   English   中英

C#格式化長數字列表以使其更緊湊

[英]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.RangeString.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 )));
}

Skip()Take()允許您從列表中的某些位置選擇值

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM