Не удается получить код для компиляции: ‘)’ ожидается

#java

#java

Вопрос:

Я переработал свой java-код для программы инвентаризации, но я все еще не могу получить код для компиляции.

 import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;

class Television {

    private String itemNumber;
    private String productName;
    private double units;



    //constructor
    public Television (String itemNumber, String productName, double units, double unitprice) {
        setItemNumber(itemNumber);
        setProductName(productName);
        setUnits(units);
        setUnitPrice(unitPrice);

    }

    //accessor methods for class variables
    public String getItemNumber () {
        return itemNumber;
    }

    public void setItemNumber (String itemNumber) {
        this.itemNumber = itemNumber;
    }

    public String getProductName () {
        return productName;
    }

    public void setProductName (String productName) {
        this.productName = productName;
    }

    public double getUnits () {
        return units;
    }

    public void setUnits (double units) {
        this.units = units;
    }

    public double getUnitPrice () {
        return unitPrice;
    }

    public void setUnitPrice (double unitPrice) {
        this.unitPrice = unitPrice;
    }

}
public class InventoryPart1 {

    public static void main (String args[]) {

        NumberFormat nf = NumberFormat. getCurrencyInstance(Locale.US);

        //create an instance of the Television class

        Television samsung = new Television ("SAMSUNG 46", "Class 6400 Series", 9.3,1,599.99);

        //use the methods from class Television to output the inventory details.
        System.out.println("Item Number: "   samsung.getItemNumber());

        System.out.println("Product Name: "   samsung.getProductName());

        System.out.print("Number of Units: "   samsung.getUnits());

        System.out.print("Unit Price: "   nf.format(Samsung.getUnitPrice()));

        System.out.print("Inventory______ Total:_______" 

  nf.format(samsung.calculateInventoryTotal());
  

Я получаю следующую ошибку:

C:Documents и настройкиAdminUserMyDocumentsInventoryPart1.java:81: ‘)’ ожидается nf.formatsamsung.calculateInventoryTotal)); ^ 1 ошибка инструмента завершена с кодом выхода 1

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

1. Похоже, вы опубликовали не весь код — не могли бы вы, пожалуйста, сделать это? А также вставить ошибки компиляции, которые вы получаете?

2. C:Documents и настройкиAdminUserMyDocumentsInventoryPart1.java:81: ‘)’ ожидается nf.formatsamsung.calculateInventoryTotal)); ^ 1 ошибка инструмента завершена с кодом выхода 1

3. @Raven50 — Вы можете отредактировать свой собственный пост и поместить туда ошибку. (На этот раз я сделал это за вас.)

4. @Kevin Hikaru Evans: оба компилируются, и оба работают. На самом деле, я понятия не имею, в чем фактическая разница между этими двумя выражениями, но я не видел никаких доказательств того, что последнее неверно. Есть ли ссылка, которая проливает свет на это?

5.@Kevin, poundifdef: Чаще всего различные синтаксисы массивов вступают в силу при объявлении переменных: если вы объявите like int[] a, b; , вы получите два int массива a и b , но если вы объявите int a[], b; , вы получите int массив a и обычный int b . Полезно знать, есть ли у вас привычка объявлять несколько переменных в одном операторе.

Ответ №1:

Вам не хватает круглой скобки!

В последней строке должно быть написано:

 System.out.print("Inventory______ Total:_______"  nf.format(samsung.calculateInventoryTotal()));
  

(добавлен ) символ в конце)

Удачи!

Фактически, это именно то, о чем говорилось в ошибке: ')' expected означает именно это — компилятор ожидал ) символа, а его там не было! 🙂

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

1. Я тоже попробовал это, но затем он сказал, что у меня было 5 ошибок вместо 1. Я так запутался с Java

2. @Raven50 — Смотрите мой пост. Это может вам помочь. ( 1 за ответ @poundifdef, поскольку это решает исходную проблему)

3. Это означает, что компилятор java не смог увидеть остальные 5 ошибок, пока вы не исправили эту. Если вы новичок в Java, я бы посоветовал использовать IDE, такую как Eclipse или Netbeans. Подобные IDE высветят ваши проблемы, как если бы это была орфографическая ошибка, и они даже предложат подсказки о том, как их исправить.

4. @Raven50 верно. Итак, первой ошибкой была синтаксическая ошибка — отсутствовала скобка. После исправления этого с вашим кодом возникли другие проблемы. Но эти проблемы не из-за синтаксиса (правильного расстановки знаков препинания и т.д.) Это проблемы с тем, правильно ли вы объявили переменные и т.д., Которые компилятор может обнаружить, только если весь синтаксис правильный.

Ответ №2:

Выполните следующие действия для компиляции вашего кода в вашем классе InventoryPart1.

  1. Поместите этот вызов для класса Television, просто удалите один аргумент, поскольку конструктор имеет только 4 параметра: Television samsung = new Television ("SAMSUNG 46", "Class 6400 Series", 9.3,599.99);
  2. Поместите одно закрытие ‘)’ как и в предыдущем сообщении, вам не хватает этого: System.out.print("Inventory______ Total:_______" nf.format(samsung.calculateInventoryTotal()));
  3. измените написание Samsung на samsung здесь: System.out.print("Unit Price: " nf.format(Samsung.getUnitPrice()));

И в вашем классе Television измените эти перечисленные вещи :

  1. Поместите одну переменную экземпляра private double unitPrice;
  2. измените написание имени вашего параметра unitprice на UnitPrice: `общественное телевидение (строка ItemNumber, Строка ProductName, двойные единицы измерения, двойная цена единицы измерения) { …}
  3. Определите один метод, поскольку он вычисляет итоговое значение для вас и возвращает TotalAmt. public double calculateInventoryTotal() {
    //calculate total here;
    return totalAmt;
    }

Ответ №3:

  • unitprice не соответствует UnitPrice в вызове конструктора Television
  • Отсутствует переменная экземпляра UnitPrice
  • Телевидение должно быть объявлено общедоступным
  • Конструктор Television не соответствует вызову в InventoryPart1 — один дополнительный аргумент (или 1 отсутствующий параметр)
  • переменная samsung неправильно указана как Samsung в InventoryPart1
  • Отсутствует метод calculateInventoryTotal
  • должно быть

    System.out.print(«Инвентаризация_ Итого:__» nf.format(samsung.calculateInventoryTotal()));

Вы, вероятно, сразу обнаружили бы все эти проблемы, если бы использовали приличную IDE, такую как Netbeans или Eclipse.

Я предполагаю, что InventoryPart1 и Television находятся в отдельных файлах InventoryPart1.java, Телевидение.java — если нет, то они должны быть.

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

1. @Larry — Ты прав насчет использования приличной IDE. Однако, в защиту Raven, многие университеты не поощряют использование IDE на ранних занятиях, потому что может стать слишком легко полагаться на их возможности и фактически не изучать язык.

2. Мой инструктор использует TextPad, на самом деле не дает никаких конкретных указаний. Сначала я пытаюсь понять эту часть, поскольку мне нужно выполнить 5 других частей.

3. @JasCav — вероятно, вы правы, но, ИМХО, очень плохое мышление со стороны университетов. Не поощряют ли профессора английского языка использование средств проверки орфографии .. профессора математики использование калькуляторов ..

4. @Raven50 — Я бы достал IDE и скрыл это от него 🙂 Я не думаю, что мог бы программировать с помощью TextPad (или не хотел бы оставаться в той же карьере)

5. @Larry — На самом деле… У меня был профессор calc, который не разрешал калькуляторы. Но это не относится к делу. Я на самом деле согласен с вами. Хотя есть студенты, которые будут использовать IDE в качестве опоры и никогда не выучат язык, ОТСУТСТВИЕ хорошей IDE сдерживает тех студентов, которые могли бы сделать гораздо больше, если бы она у них была. (С другой стороны, необходимость отладки с использованием командной строки и VIM научила меня очень быстро читать сообщения об ошибках.)

Ответ №4:

Как указал poundifdef (правильно), у вас (во-первых) отсутствует скобка. В вашем ответе вы говорите, что теперь получаете 5 ошибок вместо 1. Таким образом, я больше реагирую на это утверждение, а не на ваш дополнительный пост.

Одна вещь, которая, возможно, поможет вам в изучении Java (потому что я допустил ту же ошибку, когда только начинал), заключается в том, что ошибки компиляции и выполнения ЧРЕЗВЫЧАЙНО описательны. Я знаю, что видеть тонну текста, появляющегося на экране, может быть пугающим, но найдите секунду, чтобы прочитать его и действительно разобрать, что там написано. Давайте взглянем на вашу текущую ошибку (в скобках).

C:Documents и настройкиAdminUserMyDocumentsInventoryPart1.java:81: ‘)’ ожидается nf.formatsamsung.calculateInventoryTotal)); ^ 1 ошибка инструмента завершена с кодом выхода 1

Итак, это в основном говорит:

  • InventoryPart1.java: 81 — Это строка, в которой возникает ваша ошибка.
  • ‘)’ ожидаемый — Итак, вам не хватает закрывающей круглой скобки. Это указывает на то, что вам, вероятно, придется посчитать скобки в этой строке (или, что более вероятно, в этом операторе) и выяснить, где вы неправильно закрыли скобки.
  • nf.formatsamsung.calculateInventoryTotal)); — Компилятор показывает вам (приблизительно), в чем, по его мнению, проблема.

Как только вы исправите эту ошибку и перекомпилируете, вы можете получить больше ошибок (и это звучит так, как у вас из других ваших комментариев). Хитрость заключается в том, чтобы повторить тот же процесс при разборе ваших ошибок и понимании того, что они на самом деле говорят. Как было указано в другом ответе, хорошая IDE (интегрированная среда разработки), такая как Eclipse или NetBeans, может творить чудеса в понимании вашего кода и его улучшении. В остальном нужно остановиться и потратить некоторое время на размышления: «О чем говорит эта ошибка?» и «Что делает мой код?» и «Что я на самом деле пытаюсь здесь сделать?»

Я знаю, что это не ответило напрямую на ваш вопрос (и я предоставил 1 для poundifdef), но я надеюсь, что это поможет вам в понимании Java.

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

1. Спасибо всем за ваш вклад, я вернусь и пройдусь по этому тексту построчно. Я ценю всю вашу помощь.

2. @Raven50 — Нет проблем. Рад помочь. Если ответ poundifdef действительно помог вам решить эту конкретную проблему, пожалуйста, убедитесь, что приняли его, установив зеленую галочку рядом с его ответом.