Java: деление пар из массива

Я работаю над проектом и застрял в том, что делать дальше. Мне нужно написать программу на Java, которая принимает от пользователя десять значений и помещает эти числа в массив. Числа в массиве будут сложены вместе, и результат отобразится для пользователя. (Я получил эту часть)

Вот проблема: программа должна сравнить значения для элементов 1 и 2 (в массиве) и разделить большее число на меньшее число. Следует сравнить значения для всех нечетных / четных элементов и разделить большее на меньшее значение.

Я вообще не знаю, как это сделать. Я начал с утверждений if-else, но получаю ошибки. Сейчас он знает, что это беспорядок, но любая помощь по разделению пар массивов была бы очень полезна. Пришлите мне ссылки тоже, я не смог найти ни одной, так что я могу узнать больше.

Спасибо!

Вот что у меня так далеко:

/ import java.util.Scanner; открытый класс ExceptionHandler {

/**
 * @param args the command line arguments10
 * 10
 */
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    System.out.print("Please enter ten values:");
    System.out.println();
// Input the data from the user.

    int[ ] digit = new int[11];
    int sum = 0;
    //Declare an array

    for (int i = 1; i < digit.length; i++) {
        System.out.print("Value " + i + ": ");
        digit[i] = in.nextInt();
        sum += digit[i];
    }

    System.out.println("Total Values in Array:"+ sum);
     // Calculate the sum and print the total

    System.out.println("Would you like to divide values?");
    // Fix this later


             int result= digit[i]; 
             if (digit[i] > digit[i + 1]) 
                 result = digit[i] / digit[i + 1]; 
             else {
                 (digit[i + 1] / digit[i]);
                }
    // Compare element 0 with 1, divide larger element by smaller element
             if (digit[i])> digit[i + 3])
                result = digit[i] / digit[ i+ 3];
             else{
                 (digit[i +3])/ digit[i];   
                 }

        }

4 ответа

Решение

Вы используете int для разделения. Вместо этого используйте двойное число, поскольку оно может делить два целых числа с точностью до десятичной точки.

// needed for division
double[] digit = new double[11];
for (int i = 0; i < digit.length; i++)
{
    digit[i] = (double)in.nextInt;
    sum += (int)digit[i];
}

//you can use this variable if needed, if not, ignore it
double[] divisionResult = new double[digit.length / 2];
for(int i = 1; i < digit.length; i += 2) {
    double result = digit[i]; 
    if (result > digit[i + 1]) 
       result = result / digit[i + 1]; 
    else {
       result = digit[i + 1] / result;
    }
    divisionResult[i / 2] = result;
    System.out.println(result);
}

РЕДАКТИРОВАТЬ: Я также не уверен, почему вы используете

for(int i = 1; i < 11; i++)

Поскольку вы использовали это, я использовал это аналогично выше, но фактическое соглашение должно быть:

for(int i = 0; i < 10; i++)

Не имеет большого значения, но лучше следовать хорошим правилам кодирования:)

Вы можете просто использовать for цикл:

  for (int i = 0; i < 10; i += 2) {
     if (digit[i] > digit[i + 1]) {
        result = digit[i] / digit[i + 1];
     }
     else {
        result = digit[i + 1] / digit[i];
     }
     System.out.println(result);
  }

Вы переменная i является локальным для цикла for в вашем коде. Если вы хотите снова использовать i, вам нужно объявить его вне цикла, чтобы вы могли использовать его вне области действия цикла for. Кроме того, последнее значение "i" здесь - это последний индекс массива, который в любом случае выбрасывает массив из исключенного ограничения (другими словами, вам нужно сделать еще один цикл, в котором вы снова инициализируете "i" в 0 под вашим "Will"). Вы любите делить ценности? " Наконец, вам нужно сделать задание, так

(digit[i + 1] / digit[i]);

не является действительным утверждением. Если вы хотите записать это в результат, вам нужно написать:

result = (digit[i + 1] / digit[i]);

и если вы хотите переопределить на месте, вы можете использовать

digit[i+1] = (digit[i + 1] / digit[i]);

или же

digit[i + 1] /= digit[i];

Это должно работать, если я правильно понял, что вы хотите:

for (int i = 0; i < array.length; i = i+2) {
    int firstDigit = array[i];
    int secondDigit = array[i+1];
    if (firstDigit > secondDigit) {
        return firstDigit / secondDigit;
    } else {
        return secondDigit / firstDigit;
    }
}

Вы перебираете массив и сравниваете первый со вторым элементом. Увеличивая значение counterVariable (i) на два, вы всегда сравниваете 1-е / 2-е, 3-е / 4-е и т. Д. Числа массива.

Надеюсь это поможет:)

Другие вопросы по тегам