#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.
- Поместите этот вызов для класса Television, просто удалите один аргумент, поскольку конструктор имеет только 4 параметра:
Television samsung = new Television ("SAMSUNG 46", "Class 6400 Series", 9.3,599.99);
- Поместите одно закрытие ‘)’ как и в предыдущем сообщении, вам не хватает этого:
System.out.print("Inventory______ Total:_______" nf.format(samsung.calculateInventoryTotal()));
- измените написание Samsung на samsung здесь:
System.out.print("Unit Price: " nf.format(Samsung.getUnitPrice()));
И в вашем классе Television измените эти перечисленные вещи :
- Поместите одну переменную экземпляра
private double unitPrice;
- измените написание имени вашего параметра unitprice на UnitPrice: `общественное телевидение (строка ItemNumber, Строка ProductName, двойные единицы измерения, двойная цена единицы измерения) { …}
- Определите один метод, поскольку он вычисляет итоговое значение для вас и возвращает 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 действительно помог вам решить эту конкретную проблему, пожалуйста, убедитесь, что приняли его, установив зеленую галочку рядом с его ответом.