微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有直方图的C#等级数组

我正在瑞典学习C#的基础编程,我想知道你是否可以帮我理解一个简单的例子.

我的目标是用随机填充数组,然后显示星号(*)或任意符号多次,随机生成的数字.

这就是我的意思:

Student 1 has a grade: 4 : * * * *
Student 2 has a grade: 9 : * * * * * * * * *
etc.

这是我到目前为止提出的代码

using System;
using System.Text;

namespace Array_1_10
{
    class Program
    {
        static void Main(string[] args)
        {
            //declar and create an int array object with 5 elements

            string tempStars = "";
            int[] grades = new int[11];
            // initiate the array using Random class methods
            Random grade = new Random();
            for (int j = 1; j < 11; j++)
                grades[j] = grade.Next(1,9);
            //Read and display the array's elements

            for (int j = 1; j < 11; j++)
            {
                tempStars += "*" + " ";

                tempStars += "";
                Console.WriteLine("Student {0} has got: {1} : {2} ",j,grades[j],tempStars);
            }   
        }
    }
}

填充数组,但无论生成什么数字,星号都会从1到10,如下所示:

Student 1 has a grade 5 : *
Student 2 has a grade 1 : * *
etc.

你能帮我解决这个问题吗?非常感谢你.
Vojtech

解决方法

您需要更改代码,以显示星号的数量,以考虑成绩.所以来自for循环的代码将是:

For(j=1; j<11; j++)
{
    StringBuilder ab = new StringBuilder(grades[j]);
    For(int i=0; i<grades[j]; i++)
    {
        sb.Append(" *");
    }

    Console.WriteLine("Student {0} has grade {1} : {2}",sb.ToString());

}

额外的for循环是用学生获得的星星数量来构建一个字符串.您应该使用stringbuilder进行这些操作,因为它比创建大量字符串更有效.

需要注意的一点是,代码将stringbuilder初始化为正确的字符串长度.这为字符串构建器类保存了在用于构建字符串的引擎盖下调整其数组大小的工作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐