(0) 问题介绍
商家下面有很多会员等级,等级的评定是根据用户的积分来决定的,假设等级信息如下
等级:0 1 2 3
积分:20 100 210 350
会员A的积分为:300,小于最低等级为最低等级,大于最高等级为最高等级,其他的,大于等于等级积分才是当前等级。
会员A的等级应为2,现在写一个程序来解决这个问题。
(1)复杂的实现
public static void main(String[] args) { ArrayList<Integer> sortList = new ArrayList<Integer>() { { add(20); add(100); add(210); add(350); } }; Integer value = 300, size = sortList.size(), level = 0; boolean flag =false; for(int i=0;i<size;i++) { if(sortList.get(i) > value) { if(i == 0)//小于最低等级的情况 { level = 0; } else { level = i-1; } flag = true; break; } } if(!flag)//大于最大等级的情况 { level = size - 1; } System.out.println("他的等级是:"+level); }
(2)简单的实现
public static void main(String[] args) { ArrayList<Integer> sortList = new ArrayList<Integer>() { { add(20); add(100); add(210); add(350); } }; Integer value = 300, size = sortList.size(), level = 0; for(int i=1;i<size;i++) { if(sortList.get(i) <= value) { level = i; } else break; } System.out.println("他的等级是:"+level); }
(3) 感触
有时候>和<=就代表了正向思维和逆向思维。