неправильные типы операндов для двоичного оператора ‘

#java

Вопрос:

Я не понимаю, почему мои двоичные операнды не работают для операторов if. Например, я получаю ошибку, неверные типы операндов для двоичного оператора ‘ Первый тип: двухместный[] Второй тип: двухместный для if(цены

 public class Prices2
{
public static void main (String[] args)
{
double[] prices = {2.45, 7.85, 1.35, 1.55, 4.05, 9.55, 4.55, 1.45, 7.85, 1.25, 5.55, 10.95, 8.55,
2.85, 11.05, 1.95, 5.05, 8.15, 10.55, 1.05};
double average;
double total = 0.0;
int i;
for (i = 0; i < 20; i  )
{
total  = prices;
}

System.out.println("Sum of all prices: " total "n" );
for (i = 0; i < 20; i  )
{
if (prices <= 5.00){
System.out.println(prices   " is less than $5.00");
}
}
average = total / (20);
System.out.println("nThe average price is "   average   "n");
for (i = 0; i < 20; i  )
{
if (prices >= average) {
System.out.println( " Values above average: "   prices);
}
}
}
}
 

Комментарии:

1. total = prices; ? Что это должно означать? Цены-это массив, а общая сумма-двойная.

Ответ №1:

Поскольку цены-это массив (double []), а 5.00-это один двойной, нет смысла проверять, являются ли «цены Это было бы все равно, что сказать: «Если бы [1.2, 3.4, 5.7, 6.2, 3.4] Поэтому компилятор жалуется на это словоблудие.

Обновлено 3/18 по каждому последующему вопросу:

Короткий ответ состоит в том, чтобы заменить переменную prices переменной prices[i], чтобы соответствовать итерации, которая проверяет каждое место, поскольку это, по-видимому, является целью вычисления. Кроме того, вам не нужно объявлять «я» на верхнем уровне. Вы можете сделать это для каждого цикла, чтобы один цикл случайно не повлиял на другой цикл.

 public class Prices {
    public static void main(String[] args) {

        // Set up a list of TEST prices to check for various conditions
        double[] prices = { 2.45, 7.85, 1.35, 1.55, 4.05, 9.55, 4.55, 1.45, 7.85, 1.25, 5.55, 10.95, 8.55,
                2.85, 11.05, 1.95, 5.05, 8.15, 10.55, 1.05 };
        
        int numberOfPrices = prices.length;
        
        // GOAL: Calculate Sum of all numbers
        // For each price (i=0, 1, 2... 19), add THAT price to the current value of total
        double total = 0.0;
        for (int i = 0; i < numberOfPrices; i  ) {
            total  = prices[i];
        }
        System.out.println("Sum of all prices: "   total   "n");
        
        // GOAL: Check for for those less than 5
        // For each price (i=0, 1, 2... 19), see if THAT price is less than 5.00
        for (int i = 0; i < numberOfPrices; i  ) {
            if (prices[i] <= 5.00) {
                System.out.println(prices[i]   " is less than $5.00");
            }
        }
        
        // Calculate the average price (without hard-coding)
        double average;
        // average = total / (20);
        average = total / numberOfPrices;
        System.out.println("nThe average price is "   average   "n");
        
        // GOAL: Check for Above Average numbers
        // For each price (i=0, 1, 2... 19), see if THAT price is above the average we computed before
        for (int i = 0; i < numberOfPrices; i  ) {
            if (prices[i] >= average) {
                System.out.println(" Values above average: "   prices[i]);
            }
        }
    }
}
 

Комментарии:

1. Я переделал приведенный выше код в среде IDE, чтобы вы могли получить точный, выполнимый ответ. Это в основном то, что Харш предлагал ранее с некоторыми другими незначительными изменениями.

2. Кроме того, для будущих вопросов, пожалуйста, отформатируйте свой код в красивом принтере или IDE/редакторе при публикации, так как это облегчает визуальную отладку.

Ответ №2:

prices представляет собой массив. Как Java может определить, что вы имеете в виду, спрашивая, меньше ли 20 разных двойников, чем 9? Неужели всем им меньше 9? Неужели их меньше 9 вместе взятых? Есть ли среди них по отдельности меньше 9?

Это не очень хорошее сравнение. Ваши операнды плохие.

Ответ №3:

Вы, вероятно, хотели написать prices[i] вместо prices этого в большинстве мест