使用while循环在C#中创建金字塔

本文关键字:创建 金字塔 while 循环 使用 | 更新日期: 2023-09-27 18:27:45

我还在这里学习一些C#,但我用for循环用星号做了一个金字塔:

using System;     
namespace Nimi{      
class Ohjelma{      
static void Main(){ 
for(;;){ 
Console.Write("Anna korkeus: ");     
string eka = Console.ReadLine();     
int luku = int.Parse(eka); 
//First, I made that if the number is 0 or lower, it will ask the number again. 
//Hence the endless loop at start.
if(luku <= 0){ 
    continue; 
} else { 
    for (int i = 0; i < luku; i++ ) 
    { 
                for (int k=i+1; k < luku; k++) 
                   { 
                        Console.Write(" "); 
                } 
                for (int j = 2*i+1; j > 0; j--) 
                { 
                        Console.Write("*"); 
                    } 
            Console.WriteLine(""); 
           } 
        break; 
    } 
} 
} 
} 
}

我只是出于好奇,想知道这将如何处理我还没能创建的while循环。我想的是:

using System;     
namespace Nimi{      
class Ohjelma{      
static void Main(){ 
while(true){ 
// The While-loop version of endless loop. Not sure how different it is.
Console.Write("Anna korkeus: ");     
string eka = Console.ReadLine();     
int luku = int.Parse(eka); 
if(luku <= 0){ 
    continue; 
} else {
    int i = 0;
    int j = i * 2 + 1;
    int k = i+1;
    while(i < luku)
    {
        while (j > 0){
            while (k < luku){
            Console.Write(" ");
            k++;
            }
        Console.Write("*");
        j--;
        }
    Console.WriteLine();
    i++;
    }
    break;
    }
} 
} 
} 
}

不要真的锻炼。它只发布这样的内容(当值为4:时

   *

从for循环转移到while循环以创建带星号的金字塔的正确方法是什么?

使用while循环在C#中创建金字塔

using System;
namespace Nimi
{
    class Ohjelma
    {
        static void Main()
        {
            for (; ; )
            {
                Console.Write("Anna korkeus: ");
                string eka = Console.ReadLine();
                int luku = int.Parse(eka);
                //First, I made that if the number is 0 or lower, it will ask the number again. 
                //Hence the endless loop at start.
                if (luku <= 0)
                {
                    continue;
                }
                else
                {
                    int i = 0;
                    while (i < luku)
                    {
                        int k = i + 1;
                        while (k < luku)
                        {
                            Console.Write(" ");
                            k++;
                        }
                        int j = 2 * i + 1;
                        while (j > 0)
                        {
                            Console.Write("*");
                            j--;
                        }
                        Console.WriteLine("");
                        i++;
                    }
                    break;
                }
            }
        }
    }
}

记住:如果你的代码格式正确,阅读起来会更容易^ED来格式化所有内容

(^ED的意思是CTRL+E,然后是D(对于D,你不需要CTRL,它可以双向工作)

            for (int j = 2*i+1; j > 0; j--) 
            { 
                    Console.Write("*"); 
                }

成为

{
    int j = 2*i+1;
    while (j > 0)
    {
        Console.Write("*");
        j--;
    }
}

注意,"额外"大括号保留了j的局部性,就像for()一样。

     private static void pyramid()
    {
         int k = 10;
        int j=0;
        while(true)
        {
            int i = 0;
            while(true)
            {
                if (i >= (k - j) && i <= (k + j))
                {
                    Console.Write("*");
                    Console.Write("'t");
                }
                else
                {
                    Console.Write("'t");
                }
                if (i > (j + k))
                {
                    break;
                }
                i++;
            }
            Console.Write("'n");
            if (j == (k - 1))
            {
                break;
            }
                j++;
        }
    }