Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/64: Рейтинг темы: голосов - 64, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 3

Простейший калькулятор

05.06.2015, 19:58. Показов 12805. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Только начал изучать Java. До этого с программированием не сталкивался, поэтому код может быть мягко сказано не хорошим.
После 2-х недель изучения теории решил попрактиковаться и написать простенький калькулятор.
Вопросов собственно 2:
1.Прошу по возможности отписаться, что я сделал не так и как можно было улучшить и оптимизировать код.
2.Как сделать так, чтобы когда мы неправильно вводим второе число (например букву) программа просила ввести его заного
Java
1
System.out.println("Введите второе число:");
, а не возвращалась к выбору желаемого действия.
Всем большое спасибо.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import java.util.*;
 
public class Calculator {
    public static void main(String args[]) throws java.io.IOException {
        double db1 = 0, db2 = 0;
        int choice;
        Scanner sc = new Scanner(System.in);
        while(true) {
            try {
                System.out.println("Введите первое число:");
                db1 = (double) sc.nextDouble();
            } 
            catch(InputMismatchException exc) {
                System.out.println("\"" +sc.nextLine() + "\" не является числом" + "\n");
                continue;
            }
            do {
                System.out.println("Выберете желаемое действие:");
                System.out.println("1 - Сложение\t5 - Остаток от деления\n2 - Вычитание\t6 - Корень квадратный\n3 - Умножение\t7 - Возведение в степень\n4 - Деление");
                choice = (int) sc.nextInt();
                switch(choice) {
                case 1 :
                case 2 :
                case 3 :
                case 4 :
                case 5 :
                    try {
                        System.out.println("Введите второе число:");
                        db2 = (double) sc.nextDouble();
                    }
                    catch(InputMismatchException exc) {
                        System.out.println("\"" +sc.nextLine() + "\" не является числом" + "\n");
                        continue;
                    }
                    if(choice == 1) {
                        System.out.println(db1 + " + " + db2 + " = " + (db1 + db2) + "\n");
                    }
                    else if(choice == 2) {
                        System.out.println(db1 + " - " + db2 + " = " + (db1 - db2) + "\n");
                    }
                    else if(choice == 3) {
                        System.out.println(db1 + " * " + db2 + " = " + (db1 * db2) + "\n");
                    }
                    else if(choice == 4) {
                            if (Double.isInfinite(db1/db2)) {
                                System.out.println("Деление на 0! \n");
                            }
                            else {
                                System.out.println(db1 + " / " + db2 + " = " + (db1 / db2) + "\n");
                            }
                    }
                    else if(choice == 5) {
                            if (Double.isNaN(db1%db2)) {
                                System.out.println("Деление на 0! \n");
                            }
                            else {
                                System.out.println(db1 + " % " + db2 + " = " + (db1 % db2) + "\n");
                            }
                    }
                    break;
                case 6 :
                    System.out.println("Корень квадратный из числа " + db1 + " = " + Math.sqrt(db1) + "\n");
                    break;
                case 7 :
                    try {
                        System.out.println("Укажите степень числа " + db1);
                        db2 = (double) sc.nextDouble();
                    }
                    catch(InputMismatchException exc) {
                        System.out.println("\"" +sc.nextLine() + "\" не является степенью числа " + db1 + "\n");
                        continue;
                    }
                    System.out.println(db1 + " в степени " + db2 + " = " + Math.pow(db1, db2) + "\n");
                    break;
                default :
                    System.out.print("Выбор неверный! ");
                    break;
                } 
            } while(choice < 1 | choice > 6);
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2015, 19:58
Ответы с готовыми решениями:

Простейший калькулятор
Помогите пож переделать немного код. По заданию нужно чтобы мы вводили 2 числа в поля 1 и 2. И результат высчитывался в поле 3. Кнопка +/-...

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

Простейший калькулятор, не могу придумать выход
Всем доброго времени суток! Пишу самый простой калькулятор на java, в каждой строке ввода может быть либо число, либо операция. Должен...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
05.06.2015, 20:09
Цитата Сообщение от shurius Посмотреть сообщение
заного
заново, зано-ВО!
Цитата Сообщение от shurius Посмотреть сообщение
что я сделал не так и как можно было улучшить и оптимизировать код.
проще начать снова наверное, чем все переделывать. Операции арифметические можно вынести в отдельный метод. Чтобы переспрашивал пока не введут верное число нужно использовать цикл. Чтобы не мучаться с неверным вводом дабл и инт, лучше считывать Стринг переменную (nextLine()) , а ее уже парсить в нужный тип. Причем перед этим можно поочередно проверить каждый символ строки является ли он цифрой и если это не цифра и не "," то просить ввести заново.
1
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 3
05.06.2015, 20:27  [ТС]
Спасибо за ответ! Принцип вроде понял, но я до этого пока еще не дошел.

Добавлено через 9 минут
Чтобы переспрашивал пока не введут верное число нужно использовать цикл
Не могли ли вы подсказать каким циклом это можно реализовать именно в моём коде, так как я уже все что знаю перепробовал и нужного результата не добился.
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
05.06.2015, 21:28
к примеру заводишь булин переменную флаг, равную ФОЛС. Затем делаешь цикл while, повторяемый пока флаг равен ФОЛС, в самом цикле запрашиваешь ввод данных и проверяешь верно ли введено. Если верно то меняешь флаг с ФОЛС на ТРУ и цикл заканчивается! Таким образаом пока юзер не введет что нужно -все будет по кругу запрашивать
1
 Аватар для we2seek
84 / 84 / 42
Регистрация: 25.01.2010
Сообщений: 386
07.06.2015, 01:45
Хочешь хардкор? Попробуй лучше реализовать калькулятор на базе Обратной Польской Нотации (Rotate Polish Notation), как это делают нормальные люди
1
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
08.06.2015, 09:47
Почитайте "Искусство программирования на Java" Герберт Шилдт, Джеймс Холмс, там вторая глава как раз для вас написана.
0
0 / 0 / 0
Регистрация: 15.05.2015
Сообщений: 3
08.06.2015, 19:00  [ТС]
Всем спасибо за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.06.2015, 19:00
Помогаю со студенческими работами здесь

Простейший калькулятор со строковыми командами с использованием регулярных выражений
Реализовать простейший калькулятор, который обрабатывает строковые команды вида «a oper b», где a,b – вещественные числа, oper – один из...

Тест: написать простейший финансовый калькулятор, работающий в консоли
Задание: Необходимо написать простейший финансовый калькулятор, работающий в консоли. Функционал: 2 валюты - доллар ($12) и...

Написать простейший строковый калькулятор, поддерживающий несколько систем счисления
Здравствуйте! Есть идеи, как написать простейший строковый калькулятор, поддерживающий несколько систем счисления? Признательна за помощь.

Не деплоится простейший @Singleton @Startup с persist(.) в @PostConstruct
Используются GlassFish и Java DB, все в духе JavaEE tutorial Сервер Java DB запущен. База данных создана. Через соединение на закладке...

Простейший графический калькулятор
Помогите пожалуйста, очень уж туго идет библиотека Swing))) Если можно, то максимально нубовским способом. Задание: Swing-приложение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru