在java中,我有一个包含两个元素的数组。
我如何最好地决定我是应该添加它们,还是只选择其中之一(哪一个?)才能尽可能地接近1000?
我在做一些错误的事情,它总是把两个数字相加!
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];
}
}发布于 2016-04-27 04:34:29
您需要使用c的绝对值来捕捉c大于1000的用例。
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];
}发布于 2016-04-27 04:51:30
如果两个整数都是正数且小于或等于1000,这应该是可行的。
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.
}发布于 2016-04-27 04:35:48
尝尝这个
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;
}
}https://stackoverflow.com/questions/36874878
复制相似问题