Я работаю над небольшой программой, в которой метод принимает 3 int, bigCount smallCount и цель. Эти переменные должны представлять количество мешков с мукой двух размеров: значение веса bigCount - 5 кг на мешок, значение веса smallCount - 1 кг на мешок, а цель - это целевой вес коробки, в которой будут находиться мешки.
например, bigCount = 1, bigCount = 1, smallCount = 0, goal = 4
Должно возвращать значение false, поскольку bigCount дается значение 1, а 1 значение в bigCount представляет мешок весом 5 кг и, следовательно, мешки, которые у вас есть, никогда не поместятся в коробку с требованием веса 4. value, если значения bigCount и smallCount могут быть добавлены в комбинации для суммирования веса, указанного в целевой переменной.
Я чувствую, что есть гораздо более разумный способ go об этом, но я могу ' • придумать алгоритм, который мог бы просто завершить все это без всех этих операторов if и else if. В настоящее время logi c для некоторых из этих операторов if неверен и не улавливает весь сценарий ios для правильной работы.
public static boolean canPack(int bigCount, int smallCount, int goal){
boolean isPackable = false;
int bigBKilo = bigCount*5;
int smallBKilo = smallCount*1;
int remain5 = goal %5;
int remainTest = 6 %5;
int sum = bigBKilo+smallBKilo;
if( bigCount < 0 || smallCount < 0 || goal <0){
isPackable = false;
}else{
if(remain5 > 0 && remain5 <= smallCount && smallCount >= goal) {
isPackable = true;
}
else if(remain5 == 0 && bigCount > 0){
isPackable = true;
}
else if(bigCount == 0 && smallCount >= goal){
isPackable = true;
}
else if(smallCount ==0 && remain5 == 0){
isPackable = true;
}
else if(sum == goal){
isPackable = true;
}
else if(bigBKilo < goal && remain5 <= smallCount){
isPackable = true;
}
else if(bigCount == 0 && smallCount < goal){
isPackable = false;
}
else{
isPackable = false;
}
}
return isPackable;
}//end method