黑马程序员技术交流社区

标题: 大师们帮忙看下 [打印本页]

作者: 余尚勇    时间: 2013-6-23 23:01
标题: 大师们帮忙看下
本帖最后由 余尚勇 于 2013-6-26 23:21 编辑

帮忙看下代码,感觉没错,结果却是0,不知道哪里错了?
#region 从键盘接收用户输入的数字并求最大值
        Console.WriteLine("请输入你要求的数字的个数:");
            int num = int.Parse(Console.ReadLine());
            int[] scores = new int[num];
            int max = scores[0];
            for (int i = 0; i < scores.Length; i++)
            {
               
                Console.WriteLine("请输入第{0}个人的成绩:",i+1);
                int score = int.Parse(Console.ReadLine());
                for (int j = 0; j < scores.Length; j++)
                {
                    if (scores > max)
                        max = scores;
                }

            }
            Console.WriteLine("最大数是:{0}",max);
            #endregion
                Console.ReadKey();

360软件小助手截图20130623225639.jpg (48.06 KB, 下载次数: 0)

360软件小助手截图20130623225639.jpg

作者: 黄文超    时间: 2013-6-23 23:09
本帖最后由 黄文超 于 2013-6-23 23:11 编辑

LZ你确定你的代码能够编译?
注意10行和13、14行
  1.             #region 从键盘接收用户输入的数字并求最大值
  2.             Console.WriteLine("请输入你要求的数字的个数:");
  3.             int num = int.Parse(Console.ReadLine());
  4.             int[] scores = new int[num];
  5.             int max = scores[0];
  6.             for (int i = 0; i < scores.Length; i++)
  7.             {

  8.                 Console.WriteLine("请输入第{0}个人的成绩:", i + 1);
  9.                 scores[i] = int.Parse(Console.ReadLine());
  10.                 for (int j = 0; j < scores.Length; j++)
  11.                 {
  12.                     if (scores[j] > max)
  13.                         max = scores[j];
  14.                 }

  15.             }
  16.             Console.WriteLine("最大数是:{0}", max);
  17.             #endregion
  18.             Console.ReadKey();
复制代码

作者: nilaoyededie    时间: 2013-6-23 23:14
本帖最后由 nilaoyededie 于 2013-6-23 23:32 编辑

#region 从键盘接收用户输入的数字并求最大值
        Console.WriteLine("请输入你要求的数字的个数:");
             int num = int.Parse(Console.ReadLine());
             int[] scores = new int[num];
             int max = scores[0];
             for (int i = 0; i < scores.Length; i++)
             {
                 
                 Console.WriteLine("请输入第{0}个人的成绩:",i+1);
                 //int score = int.Parse(Console.ReadLine());  这里错了,应为score【i】打不出英文的中括号了
                 for (int j = 0; j < scores.Length; j++)
                 {
                     if (scores > max)  还有这里改为score【j】
                         max = scores; 还有这里改为score【j】
                 }

             }
             Console.WriteLine("最大数是:{0}",max);
             #endregion

作者: 余尚勇    时间: 2013-6-23 23:17
黄文超 发表于 2013-6-23 23:09
LZ你确定你的代码能够编译?
注意10行和13、14行

不行啊,scores中的i改成 j 也还是0啊
#region 从键盘接收用户输入的数字并求最大值
            Console.WriteLine("请输入你要求的数字的个数:");
            int num = int.Parse(Console.ReadLine());
            int[] scores = new int[num];
            int max = scores[0];
            for (int i = 0; i < scores.Length; i++)
            {
               
                Console.WriteLine("请输入第{0}个人的成绩:",i+1);
                int score = int.Parse(Console.ReadLine());
                for (int j = 0; j < scores.Length; j++)
                {
                    if (scores[ j ] > max)
                        max = scores[ j ];
                }

            }
            Console.WriteLine("最大数是:{0}",max);
            #endregion
                Console.ReadKey();

112.jpg (41.13 KB, 下载次数: 0)

112.jpg

作者: oxf974025918    时间: 2013-6-23 23:18
不错哈,。,。赞同上面的写法,
作者: nilaoyededie    时间: 2013-6-23 23:19
本帖最后由 nilaoyededie 于 2013-6-23 23:32 编辑

我打不出来[]了
把那个 score改为score【i】

作者: 陈壹    时间: 2013-6-24 01:05
本帖最后由 陈壹 于 2013-6-24 09:32 编辑
余尚勇 发表于 2013-6-23 23:17
不行啊,scores中的i改成 j 也还是0啊
#region 从键盘接收用户输入的数字并求最大值
            Console ...


会行才怪,scores数组从创建到结束都没有被赋值,都是默认为0,max=scores[0];当然值为0,
int score = int.Parse(Console.ReadLine());应改成
scores = int.Parse(Console.ReadLine());
然后把第二个for循环去掉,直接在后面接上
if (scores[ i ] > max)
                        max = scores[ i ];
                }



作者: 高腾    时间: 2013-6-24 08:21
在你基础上改的,其实写的不严谨 没有做一些非法判断
  1.             Console.WriteLine("请输入你要求的数字的个数:");
  2.             int num = int.Parse(Console.ReadLine());
  3.             int max = 0;
  4.             for (int i = 0; i < num; i++)
  5.             {
  6.                 Console.WriteLine("请输入第{0}个人的成绩:", i + 1);
  7.                 int score = int.Parse(Console.ReadLine());
  8.                 if (score > max)
  9.                     max = score;
  10.             }
  11.             Console.WriteLine("最大数是:{0}", max);
  12.             Console.ReadKey();
复制代码

作者: 郭泽乾    时间: 2013-6-24 12:46
static void Main(string[] args)
        {
            Console.WriteLine("请输入你要求的数字的个数:");
            int num = int.Parse(Console.ReadLine());
            int[] scores = new int[num];
            int max = scores[0];
            for (int i = 0; i < scores.Length; i++)
            {
               
                Console.WriteLine("请输入第{0}个人的成绩:",i+1);
                int score = int.Parse(Console.ReadLine());
                for (int j = 0; j < scores.Length; j++)
                {
                    if (score> max)        //此处应用变量score和max比较,数组scores无法和int类型值比较。
                        max = score;
                }

            }
            Console.WriteLine("最大数是:{0}",max);
                Console.ReadKey();
        }
    }
}

作者: .netNo1    时间: 2013-6-24 13:17
  1. Console.WriteLine("请输入你要求的数字的个数:");
  2.                         int num = int.Parse(Console.ReadLine());
  3.                         int score = 0;
  4.                         int max = 0;
  5.                         for (int i = 0; i < num; i++)
  6.                         {

  7.                                 Console.WriteLine("请输入第{0}个人的成绩:", i + 1);

  8.                                 score = int.Parse(Console.ReadLine());

  9.                                 if (score > max)
  10.                                         max = score;

  11.                         }
  12.                         Console.WriteLine("最大数是:{0}", max);

  13.                         Console.ReadKey();
复制代码

作者: 万大述    时间: 2013-6-24 18:17
把里面那个for循环拿出来,并在循环的时候带上角标。参考代码如下:
static void Main(string[] args)
        {
            Console.WriteLine("请输入你要求的数字的个数:");
            int num = ReadInt();
            int[] scores = new int[num];
            int max = scores[0];
            for (int i = 0; i < scores.Length; i++)//给用户输入想输入的各个数字
            {
                Console.WriteLine("请输入第{0}个人的成绩:",i+1);
                scores[i] = ReadInt();
            }
            for (int j = 0; j < scores.Length; j++)//把最大值找出来
            {
                if (scores[j] > max)
                {
                    max = scores[j];
                }
            }
            Console.WriteLine("其中最大数是:{0}",max);
            Console.ReadKey();
        }
        
        static int ReadInt() //该方法要求用户输入一个大于或等于0的整数并返回。
        {
            int number = 0;
            do
            {
                try
                {
                    number = Convert.ToInt32(Console.ReadLine());
                    if (number >= 0)
                    {
                        break;
                    }
                    else
                    {
                        continue;
                    }
                }
                catch
                {
                    Console.WriteLine("请输入整数!");
                    continue;
                }
            } while (true);
            return number;
        }
作者: 蔓越莓    时间: 2013-6-24 20:08
  1. Console.WriteLine("请输入你要求的数字的个数:");
  2.             int num = int.Parse(Console.ReadLine());
  3.             int[] scores = new int[num];
  4.             int max = scores[0];
  5.             for (int i = 0; i < scores.Length; i++)
  6.             {
  7.                
  8.                 Console.WriteLine("请输入第{0}个人的成绩:",i+1);
  9.                 scores[i] = int.Parse(Console.ReadLine());//这里改了下,直接用这个数组接受变量在比较,不用再弄一个新的。
  10.                 for (int j = 0; j < scores.Length; j++)
  11.                 {
  12.                     if (scores[j] > max)//这两行也改动了,之前应该是没法编译通过的吧。
  13.                         max = scores[j];//
  14.                 }

  15.             }
  16.             Console.WriteLine("最大数是:{0}",max);
  17.             
  18.                 Console.ReadKey();
复制代码

搜狗截图_2013-06-24_20-05-49.png (7.49 KB, 下载次数: 0)

搜狗截图_2013-06-24_20-05-49.png

作者: 余尚勇    时间: 2013-6-26 23:22
黄文超 发表于 2013-6-23 23:09
LZ你确定你的代码能够编译?
注意10行和13、14行

虽然有一个地方错了,还是要感谢你
作者: 余尚勇    时间: 2013-6-26 23:22
万大述 发表于 2013-6-24 18:17
把里面那个for循环拿出来,并在循环的时候带上角标。参考代码如下:
static void Main(string[] args)
     ...

谢谢了,
作者: 余尚勇    时间: 2013-6-26 23:22
万大述 发表于 2013-6-24 18:17
把里面那个for循环拿出来,并在循环的时候带上角标。参考代码如下:
static void Main(string[] args)
     ...

Thank you。。。
作者: 余尚勇    时间: 2013-6-26 23:23
.netNo1 发表于 2013-6-24 13:17

非常感谢。
作者: 余尚勇    时间: 2013-6-26 23:24
nilaoyededie 发表于 2013-6-23 23:14
#region 从键盘接收用户输入的数字并求最大值
        Console.WriteLine("请输入你要求的数字的个数:");
...

谢谢了。非常感谢你的答案




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