加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:47:50 所属栏目:百科 来源:网络整理
导读:我正在瑞典学习C#的基础编程,我想知道你是否可以帮我理解一个简单的例子. 我的目标是用随机数填充数组,然后显示星号(*)或任意符号多次,随机生成的数字. 这就是我的意思: Student 1 has a grade: 4 : * * * *Student 2 has a grade: 9 : * * * * * * * * *et
我正在瑞典学习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初始化为正确的字符串长度.这为字符串构建器类保存了在用于构建字符串的引擎盖下调整其数组大小的工作.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读