首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >比较数组中的数字

比较数组中的数字
EN

Stack Overflow用户
提问于 2016-04-27 04:14:19
回答 4查看 98关注 0票数 2

在java中,我有一个包含两个元素的数组。

我如何最好地决定我是应该添加它们,还是只选择其中之一(哪一个?)才能尽可能地接近1000?

我在做一些错误的事情,它总是把两个数字相加!

代码语言:javascript
运行
复制
    if(myArray.length==2){
        int a = 1000-(myArray[0]);
        int b = 1000-(myArray[1]);
        int c = 1000-(myArray[0]+myArray[1]);

        if( (1000-a) < (1000-b)){
            if((a+b)<1000){
                bestAnswer = myArray[0]+myArray[1];
                }
                else{
                    bestAnswer = myArray[0];
                }
            }


        if( (1000-a) > (1000-b)){   
            if((a+b)<1000){
                bestAnswer = myArray[0]+myArray[1];
            }
                else{
                    bestAnswer = myArray[0];
                }
            }
        else{
            if((1000-(myArray[0]+myArray[1]))<(1000-(myArray[0]))){
                bestAnswer = myArray[0]+myArray[1];
            }
            else{
                bestAnswer = myArray[0];
            }
        }
EN

回答 4

Stack Overflow用户

发布于 2016-04-27 04:34:29

您需要使用c的绝对值来捕捉c大于1000的用例。

代码语言:javascript
运行
复制
int a = 1000-(myArray[0]);
int b = 1000-(myArray[1]);
int c = Math.abs(1000-(myArray[0]+myArray[1]));         

if( a < Math.min(b, c)) {
    bestAnswer = myArray[0];
}
else if(b < Math.min(a, c)) {
    bestAnswer = myArray[1];
}
else {
    bestAnswer = myArray[0]+myArray[1];
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-27 04:51:30

如果两个整数都是正数且小于或等于1000,这应该是可行的。

代码语言:javascript
运行
复制
myArray[0] = 80;
myArray[1] = 90
int c = myArray[0] + myArray[1];

bestAnswer = myArray[0]; // 80

if (myArray[1] > myArray[0]) { // 90 > 80? Yes.
    bestAnswer = myArray[1]; // bestAnswer = 90
} 
if (c > myArray[1] && c <= 1000) { // 170 > 90? Yes.
    bestAnswer = c; // 170 = bestAnswer.
}
票数 1
EN

Stack Overflow用户

发布于 2016-04-27 04:35:48

尝尝这个

代码语言:javascript
运行
复制
public class TestMain2 {

    public static void main(String[] args) {
        int a = 12;
        int b = 990;
        System.out.println(check(a,b));
    }

    public static String check(int a, int b) {
        String result = null;

        int aPlusBDiff = Math.abs(1000 - a - b);
        int aDiff = Math.abs(1000 - a);
        int bDiff = Math.abs(1000 - b);

        int min = Math.min(Math.min(aDiff, bDiff), aPlusBDiff);

        if(aPlusBDiff == min) {
            result = "Add both";
        } else if(aDiff == min) {
            result = "Choose A";
        } else {
            result = "Choose B";
        }

        return result;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36874878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档