Я пытаюсь сравнить две дроби здесь.Один из них считывается из файла и затем передается num и denom, а другой - каждые два индекса массива "allFracs".
Мне нужно сравнить каждое число и число, чтобы убедиться, что они уникальны, а не дубликаты, которые уже есть в "allFracs".
Я обнаружил, что могу сделать это путем перекрестного умножения дробей и установки булевой переменной в значение true / false в зависимости от того, существует она или нет.Если логическое значение по-прежнему равно false и в массиве достаточно места, я бы установил allFracs [count] и allFracs [count + 1] равными num, denom и счетчику приращений на 2.
Моя проблемачто дроби, которые равны тем же самым вещам (то есть 4/2 и 6/3), все еще появляются в массиве.* Пожалуйста, не отвечайте профессиональными решениями, я их не пойму.
while(input.hasNextLine())
{
String[] frac = input.nextLine().split("/");
int num = Integer.parseInt(frac[0]);
int denom = Integer.parseInt(frac[1]);
boolean doesExist = false;
if (totalElements == 0)
{
allFracs[0] = num;
allFracs[1] = denom;
totalElements++;
}
else
{
for (int index = 0; index < totalElements; index += 2)
{
int fraction = (num * allFracs[index + 1]) / (denom * allFracs[index + 1]);
int fraction2 = (denom * allFracs[index] / denom * allFracs[index + 1]);
if (fraction == fraction2) // cross-multiplication of two fractions.
{
occurences[index / 2]++;
doesExist = true;
}
}
if (doesExist == false)
{
if (count + 2 >= allFracs.length - 1)
{
allFracs = resizeArray(allFracs);
allFracs[count] = num;
allFracs[count + 1] = denom;
}
else
{
allFracs[count] = num;
allFracs[count + 1] = denom;
}
}
}
count += 2; // incrementing for both the numerator and denominator.
}
}