Could you make these into one function? private ClassName function1(ClassName n) { boolean boolVar = !function2(n); final byte[] numeric1 = numeric; final byte[] numeric2 = n.numeric; final byte[] smaller, larger; final int len1 = numeric1.length; final int len2 = numeric2.length; final int maxLen; final int minLen; if (boolVar) { maxLen = len2; minLen = len1; smaller = numeric1; larger = numeric2; } else { maxLen = len1; minLen = len2; smaller = numeric2; larger = numeric1; } byte[] newArray = new byte[maxLen]; System.arraycopy(larger, 0, newArray, 0, larger.length); int carry = 0; for (int i = 0; i < minLen; i++) { int val1 = newArray[newArray.length - 1 - i]; int val2 = smaller[smaller.length - 1 - i] + carry; int res = val1 - val2; if (res < 0) { carry = 1; res += 10; } else { carry = 0; } newArray[newArray.length - 1 - i] = (byte) res; } int carryIndex = newArray.length - smaller.length - 1; while (carry == 1) { int res = newArray[carryIndex] - 1; if (res < 0) { res += 10; carry = 1; } else { carry = 0; } newArray[carryIndex] = (byte) res; carryIndex--; } boolean newNegative = negative; if (boolVar) { newNegative = !newNegative; } return new BigInteger(newArray, newNegative).trim(); } public boolean function2(ClassName n) { if (numeric.length > big.numeric.length) { return true; } else if (numeric.length < big.numeric.length) { return false; } else { int i = 0; while (i < numeric.length) { if (numeric[i] > big.numeric[i]) return true; else if (numeric[i] < big.numeric[i]) return false; i++; } return false; } }
Computer Science
// Java
Could you make these into one function?
private ClassName function1(ClassName n) {
boolean boolVar = !function2(n);
final byte[] numeric1 = numeric;
final byte[] numeric2 = n.numeric;
final byte[] smaller, larger;
final int len1 = numeric1.length;
final int len2 = numeric2.length;
final int maxLen;
final int minLen;
if (boolVar) {
maxLen = len2;
minLen = len1;
smaller = numeric1;
larger = numeric2;
} else {
maxLen = len1;
minLen = len2;
smaller = numeric2;
larger = numeric1;
}
byte[] newArray = new byte[maxLen];
System.arraycopy(larger, 0, newArray, 0, larger.length);
int carry = 0;
for (int i = 0; i < minLen; i++) {
int val1 = newArray[newArray.length - 1 - i];
int val2 = smaller[smaller.length - 1 - i] + carry;
int res = val1 - val2;
if (res < 0) {
carry = 1;
res += 10;
} else {
carry = 0;
}
newArray[newArray.length - 1 - i] = (byte) res;
}
int carryIndex = newArray.length - smaller.length - 1;
while (carry == 1) {
int res = newArray[carryIndex] - 1;
if (res < 0) {
res += 10;
carry = 1;
} else {
carry = 0;
}
newArray[carryIndex] = (byte) res;
carryIndex--;
}
boolean newNegative = negative;
if (boolVar) {
newNegative = !newNegative;
}
return new BigInteger(newArray, newNegative).trim();
}
public boolean function2(ClassName n) {
if (numeric.length > big.numeric.length) {
return true;
} else if (numeric.length < big.numeric.length) {
return false;
} else {
int i = 0;
while (i < numeric.length) {
if (numeric[i] > big.numeric[i])
return true;
else if (numeric[i] < big.numeric[i])
return false;
i++;
}
return false;
}
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps