使用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循环以创建带星号的金字塔的正确方法是什么?
此
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++;
}
}