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

时间:2010-09-05 23:42:30

标签: c#

我是一名学生,我得到了一份功课,我需要一些小帮助=)

这是我的任务:

编写一个应用程序,提示用户输入一个正方形的大小并显示一个方形的星号,其边与输入的整数相等。您的应用程序适用于从2到16的边长。如果用户输入的数字小于2或大于16,则应用程序应分别显示大小为2或16的正方形,并显示错误消息。

这是我走了多远:

        start:
        int x;
        string input;
        Console.Write("Enter a number between 2-16: ");
        input = Console.ReadLine();
        x = Int32.Parse(input);
        Console.WriteLine("\n");
        if (x <= 16 & x >= 2)
        {
          control statement
          code
          code
          code
        }
        else
        {
            Console.WriteLine("You must enter a number between 2 and 16");
            goto start;
        }

我需要帮助......

...在“if”控件中使用什么控制语句(if,for,while,do-while,case,boolean)。

我的想法就像......

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

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

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

我喜欢一些关于使用什么类型的陈述的建议,或者只是提示,当然不是整个解决方案,因为我是学生!

5 个答案:

答案 0 :(得分:4)

这不是您正在寻找的答案,但我确实有一些清洁代码的建议:

  1. 您对Int32.Parse的使用是可能导致应用程序崩溃的异常。查看Int32.TryParse(或者只是int.TryParse,我个人认为看起来更干净)。您将传递它正在解析的内容以及应该放置值的变量的“out”参数(在本例中为x)。
  2. 在实际使用变量之前,请尽量不声明变量。养成预先声明它们的习惯(特别是没有实例化的值)以后会导致难以遵循代码。对于我的第一个建议,需要提前声明x(在C#中查看default以进行默认实例化...默认情况下,这是很好的信息,但这是很好的信息),但是字符串不需要。
  3. 尝试避免在编程时使用goto :)对于这段代码,最好打破处理值的代码并返回需要绘制到单独方法中的内容并使main方法只是坐下来等待输入。但要注意硬无限循环。
  4. 编写干净且可维护的代码永远不会太早,即使它只是用于永远不需要维护的家庭作业:)

答案 1 :(得分:1)

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

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

我还注意到了一些我想在你的代码中发表评论的事情:

  1. Int32.Parse:不要使用Int32,而是int。它不会改变代码的含义。我不会解释为什么你必须使用int:这很难解释,你以后肯定会理解它。
  2. 避免使用goto声明,除非您被老师告知在当前案例中使用它。
  3. Console.WriteLine("\n");:避免“\ n”。它取决于平台(在这里,Linux / Unix;在Windows上它是“\ r \ n”,在MacOS上 - “\ n \ r”)。请改用Environment.NewLine
  4. x <= 16 & x >= 2:为什么&而不是||
  5. 可以撰写string input = Console.ReadLine();而不是string input;后跟input = Console.ReadLine();

答案 2 :(得分:1)

既然是家庭作业,我们就无法给你答案。但这里有一些提示(假设固体*,而不是中间的空格):

  1. 您想要从1迭代到N.请参阅for (int...
  2. 有一个String构造函数可以让你避免第二个循环。看看所有各种构造函数。
  3. 您当前的错误检查不符合规格。再次阅读规范。

    如果有人输入不可解析的整数,你将抛出异常。

    在转入喇叭裤之前,goto的风格已经过时了。你实际上不需要任何外部控制来获得你所获得的规格,因为它是“一次又一次”。通常,您可以编写一个这样的简单控制台应用程序来查找特殊值(例如-1),并在看到该值时退出。在这种情况下,您将使用while (!<end of input>)作为外部控制流。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

控制声明是:

for (int i = 0; i < x; i++)
{
  for ( int j = 0; j < x; j++ )
  {
    Console.Write("*");
  }
  Console.WriteLine();
}

这应该用X方形的星号打印X! 我是老师,我不久前给同学们留了同样的任务,我希望你不是其中之一! :)