爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5274|回复: 5

c#中判断数据最大最小值时,用break/goto语句的问题

[复制链接]

新浪微博达人勋

发表于 2012-7-9 23:46:04 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
本帖最后由 ouhuining 于 2012-7-9 23:50 编辑

以下是求一个数据中最小值的一个小程序
由于double.NaN不能进行大小比较,所以打算把数据里的NaN剔除,故用红色部分代码代替了temp=array[0];

private double Min(double[] array, int size)
        {
            double temp = 0;
            for (int i = 0; i < size; i++)
            {
                if (array != double.NaN)
                {
                    temp = array;
                   //break;
                }
            }
            for (int i = 0; i < size; i++)
            {
                if (temp > array && array != double.NaN)
                    temp = array;
            }
            return temp;
        }
后来,
我加了一句//break; 目的是为了在成功赋值给temp后,跳出循环,避免数据量大的时候运行次数太多。奇怪的是,如果array[0]是NaN的话,加了这句之后,temp的值就是NaN。
所以就没有办法进行比较了。
求解。


例如:
private void button7_Click(object sender, EventArgs e)        
{            
        double[] a = new double[5] { 1, double.NaN, 3, 4, 5 };            
        double b;            
        b = Min(a, a.Length);            
        textBox1.Text = b.ToString();        
}


此时,b=1。
如果a={double.NaN, 2, 3, 4, 5 };
运行结果是b=double.NaN。

break语句已经放在了if语句里面了,为什么还是会出现这种情况呢?
也尝试过,用goto语句代替break,但是结果还是一样。
而continue的话可以完成判断,但是跟我原来的目的不符。
求解。








密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-7-10 00:27:58 | 显示全部楼层
{:eb513:}{:eb513:}{:eb513:}{:eb513:}{:eb513:}{:eb513:}

好吧,我知道答案了,不能这样判断一个非数字的,有IsNaN。。。。。

private double Min(double[] array, int size)
        {
            double temp = 1;
            for (int i = 0; i < size; i++)
            {
                if (!double.IsNaN(array[i]))
                    temp = array[i];
            }
            for (int i = 0; i < size; i++)
            {
                if (temp > array[i] && array[i] != double.NaN)
                    temp = array[i];
            }
            return temp;
        }
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-7-10 08:48:41 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-7-10 14:07:30 | 显示全部楼层
来学习下~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-7-14 10:12:35 | 显示全部楼层
{:eb313:}{:eb313:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-4 10:45:58 | 显示全部楼层
真牛
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表