黑马程序员技术交流社区

标题: 做题中遇到的困难不知道怎么解决 [打印本页]

作者: 马振伟    时间: 2014-8-3 09:33
标题: 做题中遇到的困难不知道怎么解决
本帖最后由 马振伟 于 2014-8-3 23:10 编辑

//10、 编写一个掷筛子100次的程序,并打印出各种点数的出现次数。
        static void Main(string[] args)
        {
            //new 下random 好调用
            Random c = new Random();
            int s = 0;
            //申请一随时可以改变的空的集合用来添加随机产生的数
            List<int> listArr = new List<int>();
            //写个100次循环随机产生的数
            for (int i = 0; i < 1000; i++)
            {
                //随机题目没说范围我就直接用0-1001之内好了
                s = c.Next(0, 1001);
                listArr.Add(s);
            }
            for (int i=0; listArr<listArr.Count-1;i++ )
            {
            }
程序一运行到 for (int i=0; listArr<listArr.Count-1;i++)     i++这里的i他就会出个警告说检测到无法访问的代码
请各位大侠们指点迷津什么问题啊这是!
我这个程序还没写完!!全部代码都发上来了!

QQ图片20140803092553.jpg (157.94 KB, 下载次数: 31)

我想知道我出问题的i为什么无法访问错在那里请大侠们指点迷津

我想知道我出问题的i为什么无法访问错在那里请大侠们指点迷津

作者: 流失的温度0    时间: 2014-8-3 09:51
本帖最后由 流失的温度0 于 2014-8-3 09:52 编辑

我复制你的代码生成了一下,没有提示说无法访问。
还有一点你没考虑到,
题目说的是掷骰子,骰子最多也就是6点,
所以随机数那边应该是c.Next(1,7);
这样以来也就是1到6这6个数,随机产生一百次
那么就可以使用数组来做了。数组长度为6。
那样就简单多了。
我是这么写的
当然这只是一种方法,不要让别人的方法干扰你的想法
别人的不一定是最好的。
private static void Main(string[] args)
{
    //new 下random 好调用
    Random c = new Random();

    // 一个长度为6的int类型数组。
    int[] arr = new int[6] {0, 0, 0, 0, 0, 0};

    for (int i = 0; i < 100; i++)
    {
        int temp = c.Next(1, 7);// 产生随机数。并保存。
        arr[temp - 1]++;        // 产生的随机数-1后作为下标,并将该位置的值自增1。
    }

    for (int i = 0; i < arr.Length; i++) // 这里arr.Length可以直接写6.因为定义的时候就是写的6。
    {
        Console.WriteLine("{0}出现的次数为{1}。",i+1,arr); // 遍历输出。
    }
    Console.ReadKey();
}


作者: qsq0000hm    时间: 2014-8-3 09:52
for (int i=0; listArr[i]<listArr.Count-1;i++)是不是应该是for (int i=0; i<listArr.Count-1;i++)呢
作者: 马振伟    时间: 2014-8-3 09:57
流失的温度0 发表于 2014-8-3 09:51
我复制你的代码生成了一下,没有提示说无法访问。
还有一点你没考虑到,
题目说的是掷骰子,骰子最多也就是 ...

谢谢你的回答我想知道我的最后的i 错在呢哪里我也有截图
就是提示不能访问
难道VS也搞个歧视在你哪里能用我这里不能用!!
整个代码都发上去了!!
作者: 流失的温度0    时间: 2014-8-3 10:08
对了,还有循环那边,是循环100次,你写成了1000次了。下面是我按照你的方法做的
但是不知道后面的和你的想法一不一样。
参考一下吧。
//new 下random 好调用
Random c = new Random();
int s = 0;
//申请一随时可以改变的空的集合用来添加随机产生的数
List<int> listArr = new List<int>();
//写个100次循环随机产生的数
for (int i = 0; i < 100; i++)
{
    //随机题目没说范围我就直接用0-1001之内好了
    s = c.Next(1, 7);
    listArr.Add(s);
}
for (int i = 1; i < 7 ; i++) // 点数放在外层循环,便于判断。
{
    s = 0;  // 每次循环都将计数置为0.
    for (int j = 0; j < listArr.Count; j++) // 内层循环,判断每个位置的值是否等于外层循环当前的值。listArr.Count不需要-1。
    {
        if (listArr[j] == i) // 相等,计数值自增1、
        {
            s++;
        }
    }
    Console.WriteLine("{0}出现的次数为{1}",i,s);  // 外层每个数字判断结束,打印结果。
}



作者: 流失的温度0    时间: 2014-8-3 10:11
我这边没出现这个问题。
我用的是VS2012Up4

QQ截图20140803101037.png (102.26 KB, 下载次数: 31)

QQ截图20140803101037.png

作者: 马振伟    时间: 2014-8-3 10:15
流失的温度0 发表于 2014-8-3 10:11
我这边没出现这个问题。
我用的是VS2012Up4

class Program
    {//10、 编写一个掷筛子100次的程序,并打印出各种点数的出现次数。

        static void Main(string[] args)
        {
            //声明6个变量用来存储1-6出现的次数
            int a1 = 0;
            int b2 = 0;
            int c3=0;
            int d4=0;
            int f5=0;
            int g6 = 0;
            Random number = new Random();
            int number1 = 0;
            for (int i = 0; i < 100; i++)
            {
                number1 = number.Next(1, 7);
                //对1-6这几个数依次判断!
                switch (number1)
                {
                        //如果出现1-6的值对应储存1-6出现次数的值就会++
                    case 1:
                     ++a1;
                        break;
                    case 2:
                        ++b2;
                        break;
                    case 3:
                        ++c3;
                        break;
                    case 4:
                        ++d4;
                        break;
                    case 5:
                        ++f5;
                        break;
                    case 6:
                        ++g6;
                        break;
                }

            
            }

            Console.WriteLine("1出现了{0}次,2出现了{1}次,3出现了{2}次,4出现了{3}次,5出现了{4}次,6出现了{5}次",
                a1, b2, c3, d4, f5, g6);
            Console.ReadKey();
        }
我些的程序比你的麻烦不少!!
作者: 流失的温度0    时间: 2014-8-3 10:18
马振伟 发表于 2014-8-3 10:15
class Program
    {//10、 编写一个掷筛子100次的程序,并打印出各种点数的出现次数。

有思路能解决就好,方法慢慢改进。共同学习,不断进步。加油!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2