C#-需要控制声明的建议

C#-需要控制声明的建议,c#,C#,我是一名学生,我有一个家庭作业,我需要一些小的帮助() 我的任务是: 编写一个应用程序,提示用户输入一个正方形的大小,并显示一个边长等于输入整数的星号正方形。您的应用程序适用于从2到16的侧面尺寸。如果用户输入的数字小于2或大于16,则应用程序应分别显示大小为2或16的正方形以及错误消息 我已经走了这么远: 开始: int x; 字符串输入; Console.Write(“输入一个介于2-16之间的数字:”); input=Console.ReadLine(); x=Int32.Parse(输入

我是一名学生,我有一个家庭作业,我需要一些小的帮助()

我的任务是: 编写一个应用程序,提示用户输入一个正方形的大小,并显示一个边长等于输入整数的星号正方形。您的应用程序适用于从2到16的侧面尺寸。如果用户输入的数字小于2或大于16,则应用程序应分别显示大小为2或16的正方形以及错误消息

我已经走了这么远:
开始:
int x;
字符串输入;
Console.Write(“输入一个介于2-16之间的数字:”);
input=Console.ReadLine();
x=Int32.Parse(输入);
Console.WriteLine(“\n”);
如果(x=2)
{
控制语句
代码
代码
代码
}
其他的
{
Console.WriteLine(“您必须输入一个介于2和16之间的数字”);
转到开始;
}
我需要帮助。。。 。。。在“if”控件内使用什么控件状态(if、for、while、do-while、case、boolean)

我的想法是

我是否编写了一个代码,为输入的每种类型的数字写出方框?这是很多代码

…必须有一个包含一些“变量++”的代码,可以为我完成任务,但是什么控制语句最适合任务呢

但是如果我使用“variable++”,我应该如何在输出中写入空格,因为毕竟它必须是一个正方形?!=)


我想要一些关于使用哪种类型语句的建议,或者只是一个提示,当然不是整个解决方案,因为我是一名学生

您不必为输入的每种类型的数字编写代码。相反,您必须使用循环
用于
关键字)

也许我必须在这里停下来,让你来做这项工作,但我只想给你一个提示:你可能想用两个循环来做,一个嵌入另一个

我还注意到一些我想在您的代码中注释的内容:

  • Int32.Parse
    :不要使用
    Int32
    ,而是使用
    int
    。它不会改变代码的含义。我不会解释为什么必须使用
    int
    :这很难解释,以后您肯定会理解的
  • 避免使用
    goto
    语句,除非您的老师告诉您在当前案例中使用它
  • Console.WriteLine(“\n”):避免“\n”。它依赖于平台(这里是Linux/Unix;在Windows上是“\r\n”,在MacOS上是“\n\r”)。改用
    Environment.NewLine
  • x=2
    :为什么
    &
    而不是
    |
  • 您可以编写
    string input=Console.ReadLine()而不是
    字符串输入后跟
    input=Console.ReadLine()

  • 控制声明是:

    for (int i = 0; i < x; i++)
    {
      for ( int j = 0; j < x; j++ )
      {
        Console.Write("*");
      }
      Console.WriteLine();
    }
    
    for(int i=0;i
    这应该打印一个X X正方形的星号!
    我是老师,不久前我把同样的任务留给了我的学生,我希望你不是他们中的一员!:)

    因为这是家庭作业,我们不能给你答案。但这里有一些提示(假设为实心*,而不是中间的空白):

  • 您将要从1迭代到N。请参阅
    了解(int...
  • 有一个字符串构造函数可以避免第二个循环
  • 您当前的错误检查不符合规范。请重新阅读规范

    如果有人输入一个不可解析的整数,您将抛出一个异常


    goto在钟形底部出现之前就已经过时了。你实际上不需要任何外部控制,因为它是“一次性的”。通常,你会编写这样一个简单的控制台应用程序来寻找一个特殊值(例如,-1),当你看到该值时退出。在这种情况下,你会使用
    while(!)
    作为外部控制流。

    如果x大于或等于16,为什么不给它指定16(因为你最终需要画一个边长为16的正方形)(并添加一条适当的消息)?

    这不是你想要的答案,但我对干净的代码有一些建议:

  • 使用Int32.Parse可能会导致应用程序崩溃。请查看Int32.TryParse(或者只查看int.TryParse,我个人认为它看起来更干净)。您将向它传递解析的内容和应将值放入其中的变量的“out”参数(在本例中,
    x
  • 在实际使用变量之前,尽量不要声明变量。养成预先声明所有变量的习惯(尤其是没有实例化的值)可能会导致以后难以理解代码。对于我的第一个建议,
    x
    需要提前声明(查看C中的
    default
    以获得默认实例化…默认情况下,这是一个很好的信息,但很容易理解),但不需要使用字符串
  • 编程时尽量避免使用
    goto
    :)对于这段代码,最好将处理值并返回需要绘制到单独方法中的内容的代码分解出来,让主方法只是坐在那里等待输入。不过要注意硬无限循环

  • 编写干净且可维护的代码永远都不会太早,即使只是为了一个永远不需要维护的家庭作业:)

    下次试着独自做家庭作业。。。。这一次我给出了答案,因为这是一个非常简单的练习,但是如果你不能破解这个,你应该多学习。你可以提供一些提示,但不能给出完整的解决方案。只要OP声明这是一个家庭作业,请求帮助就可以了!我意识到太晚了。。。对不起,我只是希望这能给fierflash一些启动programmin的动力
    for (int i = 0; i < x; i++)
    {
      for ( int j = 0; j < x; j++ )
      {
        Console.Write("*");
      }
      Console.WriteLine();
    }