Skip to content

консольное приложение калькулятор - #1

Open
volkovdimaya wants to merge 5 commits into
mainfrom
dev
Open

volkovdimaya wants to merge 5 commits into
mainfrom
dev

Conversation

@volkovdimaya

Copy link
Copy Markdown
Owner

No description provided.

Comment thread src/main/java/Main.java
Comment thread src/main/java/Main.java Outdated
Comment thread src/main/java/Product.java Outdated
String name;
double cost;

Product(String name , double cost)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 Классно, что ты создал специальный класс для описания продукта!
Обычно в java при создании кастомного класса, используемого для описания и хранения данных о каком-то объекте, переопределяются методы equals и hashcode. Они важны для сравнения объектов. Подробнее можно почитать, например, здесь:
https://javarush.com/groups/posts/2179-metodih-equals--hashcode-praktika-ispoljhzovanija

Comment thread src/main/java/FormatterRub.java Outdated
@@ -0,0 +1,20 @@
public class FormatterRub {

public String correctEnding(double value)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Для правильной обработки окончания нужно учесть округленное в меньшую сторону значение без дробной части, и на что оно оканчивается: 1 - "рубль", 2-4 - "рубля", 5-9 (и 0) - "рублей". Плюс учесть, что для чисел 11-19 - "рублей" - для этого стоит проверять, что <число> % 100 находится между 11 и 19 включительно.
Текущее решение не подходит, например, для 21, 34 и т.п.

Comment thread src/main/java/Calculator.java Outdated

public class Calculator {
double sum;
Scanner scaner = new Scanner(System.in);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 Поля, которые используются только внутри класса, лучше делать приватными, чтобы их нельзя было изменить снаружи:

Suggested change
Scanner scaner = new Scanner(System.in);
private double sum;
private Scanner scaner = new Scanner(System.in);

Comment thread src/main/java/Calculator.java Outdated
ArrayList<Product> products = new ArrayList<>();


private String IputName()

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 В java принято именовать методы в стиле camelCase - с маленькой буквы:

Suggested change
private String IputName()
private String inputName()

Comment thread src/main/java/Calculator.java Outdated

public void ShowProducts()
{
FormatterRub f = new FormatterRub();//для форматирования окончания рубля

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 Рекомендую давать переменным развернутые названия, это облегчает чтение кода:

Suggested change
FormatterRub f = new FormatterRub();//для форматирования окончания рубля
FormatterRub formatter = new FormatterRub();

Comment thread src/main/java/Calculator.java Outdated
System.out.println("Добавленные товары:");
for (Product product : products)
{
System.out.println("Товар: " + product.name + " цена: " + product.cost + " " + f.correctEnding(product.cost));

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🍏 При печати в памяти будут создаваться промежуточные строки из-за использования оператора "+". Можно использовать StringBuilder, который сформирует только результирующую строку, или String.format.
https://javarush.com/quests/lectures/questmultithreading.level02.lecture06
https://habr.com/ru/articles/260767/

изменены рекомендации
форматирование
изменены рекомендации
форматирование
для Product переопределены equals и hashCode
@volkovdimaya

volkovdimaya commented Feb 12, 2024 via email

Copy link
Copy Markdown
Owner Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants