操作数组的相关程序

    /**
     *  * 判断修改会员等级的合法性
     * 1.当sorts大于数据库中所有的sorts值时 (1,3) 5
     * 2.当sorts小于于数据库中所有的sorts值时 1 (3,5)
     * 3.当sorts等于数据库中所有的sorts值时 1 (1,3,5)
     * 4.当sorts在数据库中能找到大于和小于它的值时 3 (1,5)
     * 说明:1.首先判断list的长度,(大于1,等于1,等于0)三种情况
     *        2.当list.size()>1,将数据库中的sort字段组成字符串,再转换成数组
     *        2.1当sorts等于数据库中所有的sorts值时 1 (1,3,5)
     *        2.2得到该数组中的最大,最小值
     *        2.3.当sorts大于数据库中所有的sorts值时 (1,3) 5
     *        2.4当sorts小于于数据库中所有的sorts值时 1 (3,5)
     *        2.5当sorts在数据库中能找到大于和小于它的值时 3 (1,2,4,5)
     *        2.5.1 拆分(1,2,4,5)得到3之前的数据组成 数组 [1,2] ,再得到 3之前一位数据 进行判断
     *        2.5.2 拆分(1,2,4,5)得到3之后的数据组成 数组 [4,5]   ,再得到3之后一位数据 进行判断
     * @param sorts  会员等级排序
     * @param limitMax 所需累计最小值  (用最小值保存累计数值,最大值留着以后用)
     * @param upd   用于判断是否是修改验证 0 :不是  1:是
     * @param req
     * @param resp
     * @return
     */
    @RequestMapping("/leveljudgetwo.jhtml")
    @ResponseBody
    public String levelJudgeTwo(@RequestParam int sorts,
                 @RequestParam int limitMax,@RequestParam int upd,@RequestParam String                                    sortflag,HttpServletRequest req,
            HttpServletResponse resp) {
        int shop_id = 2;
        String str = "yes";
        String str1 = "";
        boolean flag = true;
        List<MemberLevel> list = this.memberLevelService.listObjectAll();//遍历所有的对象
        System.out.println("sorts------------------"+sorts);
        System.out.println("limitMax------------------"+limitMax);

        /*
         * 当list.size()>1,将数据库中的sort字段组成字符串,再转换成数组
         */
        if (list.size() > 1) {
            for (MemberLevel level : list) {
                int sortsTwo = level.getSort();
                str1 = str1 + sortsTwo + ",";
            }
            str1 = str1.substring(0, str1.length() - 1);
            String[] arr = str1.split(",");

            String [] arrOne = {sortflag};

            String[] arrResult = this.memberLevelService.arrContrast(arr, arrOne);     

            for(int i=0;i<arrResult.length;i++){
                if(sorts==Integer.parseInt(arrResult[i])){
                    flag = false;
                }
            }

            //              for (int i = 0; i < arr.length; i++) {
            ////                    System.out.println("arr[]--------"+arr[i]);
            //                  /*
            //                   * 3.当sorts等于数据库中所有的sorts值时 1 (1,3,5)
            //                   */
            //                  if (sorts == Integer.parseInt(arr[i])) {//当数据库中已经有了该等级的sort, flag=false
            //                      flag = false;
            //                      break;
            //                  }
            //              }

            /*
             * 得到该数组中的最大,最小值
             */
            int nMax = Integer.parseInt(arr[0]);//最大值
            int nMin = Integer.parseInt(arr[0]);//最小值
            for (int i = 0; i < arr.length; i++) {
                if (nMin > Integer.parseInt(arr[i])) {
                    nMin = Integer.parseInt(arr[i]);
                }

                if (nMax < Integer.parseInt(arr[i])) {
                    nMax = Integer.parseInt(arr[i]);
                }
            }
            MemberLevel level2 = this.memberLevelService.getObjectBySort(shop_id, nMax);//通过店铺ID 和排序号找到对象
            MemberLevel level3 = this.memberLevelService.getObjectBySort(shop_id, nMin);//通过店铺ID 和排序号找到对象
            int limit_max1 = level2.getLimit_max();//所需累计最小值  (用最小值保存累计数值,最大值留着以后用)
            int limit_max2 = level3.getLimit_max();//所需累计最小值  (用最小值保存累计数值,最大值留着以后用)

            /*
             * 1.当sorts等于于数据库中所有的sorts值时 (1,3,5) 5
             */
            if (sorts >= nMax) {
                int max = Integer.parseInt(arr[0]);         //最大值
                int second =Integer.parseInt(arr[1]);      //次大值
                for(int i = 0;i < arr.length;i++)
                {
                    if(Integer.parseInt(arr[i]) > max)       //更新最大值和次大值
                    {
                        second = max;
                        max = Integer.parseInt(arr[i]);
                    }
                    else if(Integer.parseInt(arr[i]) < max && Integer.parseInt(arr[i]) > second)  //更新次大值
                    {
                        second = Integer.parseInt(arr[i]);  //得到3的值
                    }
                    MemberLevel level5 = this.memberLevelService.getObjectBySort(shop_id, second);//通过店铺ID 和排序号找到对象
                    int limit_max5 = level5.getLimit_max();//所需累计最小值  (用最小值保存累计数值,最大值留着以后用)

                    if (limitMax <= limit_max5) {//不满足条件,flag=false
                        flag = false;
                    }
                }
            }

            /*
             * 2.当sorts等于最小值数据库中所有的sorts值时 1 (1,3,5)
             */
            if (sorts <= nMin) {

                int min = Integer.parseInt(arr[0]);         //最大值
                int second =Integer.parseInt(arr[1]);      //次大值
                if (min > second) {  //找到数组中第二小的值
                    min = Integer.parseInt(arr[1]);
                    second = Integer.parseInt(arr[0]);
                }
                for (int i = 2; i < arr.length; ++ i) {
                    if (Integer.parseInt(arr[i]) < min) {
                        second = min;
                        min = Integer.parseInt(arr[i]);
                    } else if (Integer.parseInt(arr[i]) < second) {
                        second = Integer.parseInt(arr[i]);
                    }
                }
                MemberLevel level6 = this.memberLevelService.getObjectBySort(shop_id, second);//通过店铺ID 和排序号找到对象
                int limit_max6 = level6.getLimit_max();//所需累计最小值  (用最小值保存累计数值,最大值留着以后用)

                if (limitMax >= limit_max6) {//不满足条件,flag=false
                    flag = false;
                }
            }

            System.out.println("flag----------------------"+flag);

            /*
             * 4.当sorts在数据库中能找到大于和小于它的值时 3 (1,2,3,4,5)
             */
            String str2 = "";
            String str3 = "";
            if (nMin < sorts && sorts < nMax) {
                for (int j = 0; j < arr.length; j++) {
                    int p1 = 0;
                    int p2 = 0;
                    /*
                     * sorts前面的数据组成数组
                     */
                    if (Integer.parseInt(arr[j])< sorts) {
                        str2 = str2 + arr[j] + ",";

                        p1++;

                    }

                    if (p1 > 1) {//sort之前的数字超过1个
                        str2 = str2.substring(0, str2.length() - 1);
                        System.out.println("str2----------"+str2);
                        String[] arr2 = str2.split(",");

                        int nMax2 = Integer.parseInt(arr[0]);
                        for (int i = 1; i < arr2.length; i++) {

                            if (nMax2 < Integer.parseInt(arr2[i])) {
                                nMax2 = Integer.parseInt(arr2[i]);
                            }
                        }

                        MemberLevel level7 = this.memberLevelService.getObjectBySort(shop_id, nMax2);
                        int limit_max7 = level7.getLimit_max();

                        if (limitMax < limit_max7) {
                            flag = false;
                        }

                    } else {//sort之前的数字只有1个

                        if (limitMax <= limit_max1) {
                            flag = false;
                        }
                    }

                    /*
                     * sorts后面的数据组成数组
                     */
                    if (Integer.parseInt(arr[j]) >sorts) {
                        str3 = str3 + arr[j] + ",";

                        p2++;

                    }

                    if (p2 > 1) {//sort之前的数字超过1个
                        str3 = str3.substring(0, str3.length() - 1);
                        System.out.println("str3----------"+str3);

                        String[] arr2 = str3.split(",");

                        int nMax3 = Integer.parseInt(arr[0]);
                        for (int i = 1; i < arr2.length; i++) {

                            if (nMax3 < Integer.parseInt(arr2[i])) {
                                nMax3= Integer.parseInt(arr2[i]);
                            }
                        }

                        MemberLevel level8 = this.memberLevelService.getObjectBySort(shop_id, nMax3);
                        int limit_max8 = level8.getLimit_max();

                        if (limitMax >= limit_max8) {
                            flag = false;
                        }

                    } else {//sort之后只有一个数

                        if (limitMax >=limit_max2) {
                            flag = false;
                        }
                    }

                }

            }

        }

        if(!flag){//flag状态用于判断
            str = "no";
        }
        return str;
    }
时间: 2024-10-11 06:55:58

操作数组的相关程序的相关文章

php对二维数组进行相关操作(排序、转换、去空白等)

php对二维数组进行相关操作(排序.转换.去空白等) 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-11-04 这篇文章主要介绍了php对二维数组进行相关操作,包括php对二维数组排序.转换.去空白,以及去重复值等,感兴趣的小伙伴们可以参考一下 技巧提示: ? 1 2 3 4 5 6 7 8 9 array_keys($array) //返回所有键名   array_values($array) //返回所有键值    $result=array_reverse($inp

解决点击关闭按钮,应用程序退出时,系统爆出“集合已修改,可能无法执行枚举操作”异常的相关思路

这两天在优化升级公司的一个业务系统时,更改了一下窗体关闭事件中的一句代码,由system.Enviromen.Exit(0)改为了Application.Exit();但是这时候问题就出现了,当点击系统右上角关闭按钮的时候,会爆出“集合已修改,可能无法执行枚举操作”的异常.如下图所示: 这是什么原因造成的呢?问了一下度娘,出现“集合已修改,可能无法执行枚举操作”这种异常大部分都是因为误用foreach语句引起的,foreach是取只读的,在取的时候数据不能变(包括修改,删除,添加等).要避免这个

MongoDB中数组类型相关的操作

概述 在MongoDB的模式中,我们经常将一些数据存储到数组类型中,即我们常见的嵌套模式设计的一种实现方式.数组的这种设计实现方式在关系数据库中是没有或者说不常见的.所以,通过本文我们来梳理一下MongoDB的数组的相关操作.关于数组的操作可以分成两类,一类是数组操作符,另一个是数组运算修饰符.  数组操作符 操作符 实现功能 $ 根据查询选择器定位要更新的文档 $push 添加值到数组中 $pushAll 添加数组到一个数组中.(将被$rach取代) $addToSet 添加值到数组中,重复了

字符串数组初始化相关问题总结

C字符串数组初始化相关问题总结 在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串.总结起来有以下三种方式: (1) char str[10]=""; (2) char str[10]={'\0'}; (3) char str[10]; str[0]='\0'; 第(1)(2)种方式是将str数组的所有元素都初始化为'\0',而第(3)种方式是只将str数组的第一个元素初始化为'\0'.如果数组的size非常大,那么前两种方式将会造成很大的开销. 所以,除非必要(

利用反射动态操作数组

java语言中,数组对象并不是从某个类实例化出来的,而是JVM动态创建的.对数组对象使用如下操作,可看到数组对应的Class对象.通过RTTI(Run-Time Type Information)可直接检查数组的运行时类型,以及它的签名.下方的 "[L"就是int[]/Integer[] 的运行类型. 1 Integer[] integers = (Integer[]) Array.newInstance(Integer.class,4); 2 System.out.println(i

一些ES5的操作数组的方法

在ES5规范中新增了不少操作数组的方法,特此罗列一下以备使用 1. forEach循环 有点类似jQuery的each循环 [12,23,36,4,5].forEach(function(v,k){ console.log(v)   得到元素值,    12,23,36,4,5 console.log(k)   得到元素下标 ,0,1,2,3,4 }) 方便在不借助三方库的情况下遍历各类数组 2.filter过滤器 用于筛选元素 var arr = [12,23,36,4,5].filter(f

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

数组的相关知识

数组默认值对照图 数组类型 数组元素的默认值 byte.short.int.long 0 float.double 0.0 char '\0' boolean false Object.type null 数组的相关操作: 1.数组长度 语法格式: 数组名.length 2.数组填充 语法格式:Arrays.fill(数组名, 值)    Arrays.fill(数组名,开始下标,结束下标,值) 注:在使用Arrays的fill方法对数组进行赋值时,可以指定起始位置begin和终止位置end,这

WinCE::相关程序联调出现问题时,如何判断是哪个程序出现了问题?

例如:有 A.B 和 C 三种程序,其中 A 和 V1.00 和 V1.10 两个版本.前提:1) 程序之间的接口没有发现变化:2) 两次输入到 A 的数据是相同的:3) 三个程序在运行中都没有异常弹框,或其它问题出现.运行结果:A V1.00 与 B 和 C 一起运行,结果正常:重复运行,也正常:A V1.10 与 B 和 C 一起运行,则得不到想要的结果.重复测试,也是一样的结论.问题: 按以上条件,能否断定是 A V1.10 的程序功能实现有问题? 实际最后的原因,确是 B 程序在线程中调