如何向下舍入到int数组中最接近的整数?

lia*_*dee 0 java arrays math integer rounding

我正在设计一个Java捐赠插件,用户可以从中捐赠自定义金额.从捐赠中,您可以从某些包裹中获得好处.

我想做的是将整数n向下舍入到最近的捐赠包.

例如,可能有3个捐赠包,全部表示为整数.有5美元,10美元和20美元的捐赠套餐.如果用户捐赠13美元,我希望该插件将其降低到10美元,因为这是最近的捐赠套餐.

Nis*_*ant 5

好吧,我今天有空闲时间.(:捐赠阵列的关注正在增加秩序......否则只需先排序

public class Donation {
    private static int[] donArray = {10, 5, 30, 20};
    static{
        Arrays.sort(donArray);
    }

    public static void main(String[] args){
        int paid = 13;
        System.out.println("Applied Donation: " + applyDonation(paid));
    }

    private static int applyDonation(int paid) {
        int applied = 0;
        for(int range: donArray){
            if(range <= paid)
                applied = range;
            else
                break;
        }
        return applied;
    }
}
Run Code Online (Sandbox Code Playgroud)

甚至更简单:

    TreeSet<Integer> donSet = new TreeSet<Integer>(Arrays.asList(new Integer[]{10, 5, 30, 20}));
    int paid = 13;
    System.out.println("Applied Donation: " + donSet.floor(paid));
Run Code Online (Sandbox Code Playgroud)