С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54

Деление на ноль

15.06.2020, 07:40. Показов 1083. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Начал знакомиться с андроид и первая работа простой калькулятор. Вроде все работает , кроме обработки исключения деления на ноль.

Ребят, посмотрите подскажите, в чем проблема, как лучше это прописать?
Читал что это делается через try catch, но у меня почему-то вообще не срабатывает

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
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    TextView resultwindow; // текстовое поле для вывода результата
    EditText vvodwindow1;   // поле для ввода числа
Button divisionbut;
Double oper = null; //Результат операции будет попадать в переменную oper
String opertext = "";
String lastOper = "="; //знак операции - в переменную lastOper
 
public void onClick(View v) {
        switch (v.getId()) {
case R.id.division:
                vvodwindow1.setText(vvodwindow1.getText().toString()+"/");
                if ((oper != null) && (lastOper != "=")) {
                oper = oper + Double.valueOf(opertext);
                opertext = oper.toString();
                vvodwindow1.setText(opertext+"/");
                resultwindow.setText(opertext);
            }
                lastOper = "/";
                // если введено что-нибудь
               if(opertext.length()>0){
               opertext = opertext.replace(',', '.');
                  try{
                        Operation(Double.valueOf(opertext), lastOper);
                    }catch (NumberFormatException ex){
                        vvodwindow1.setText("");
                    }catch (ArithmeticException e) {
                       Toast.makeText(this, e.toString() + ": Нельзя делить на ноль!", Toast.LENGTH_LONG).show();
                    }
                }
                opertext = "";
                break;
 private void Operation(Double number, String operation){
if(oper ==null){
            oper = number;
        }
        else{
            if(lastOper.equals("=")){
                lastOper = operation;
            }
            switch(lastOper){
case "/":
                    if(number==0){
                        oper =0.0;
                    }
                    else{
                        oper /=number;
                    }
                    break;
resultwindow.setText(oper.toString().replace('.', ','));
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2020, 07:40
Ответы с готовыми решениями:

Сделать, чтобы при попытке деления на ноль, выводилось сообщение: «Деление на ноль»
Создайте консольное приложение. В нем реализуйте нахождение значения выражения 1/(x+n), где n – ваш вариант, а вместо х должно вводиться...

Деление на ноль (хотя я не делю на ноль)
.model small .stack 300h .data tabw dw -1135h,2326h dw 2A76h,0458h tabb dw 16h,9ah dw 32h,86h .CODE beg:mov ax,@data ...

Возникает ошибка "Деление на ноль", когда на ноль ничего и нигде не делится
Написал программу, которая выводит на экран координаты клика мыши. SSEG segment stack db 256 dup(0) SSEG ends ...

3
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
15.06.2020, 12:38
Так метод Operation не прокидывает никаких исключений, да и зачем делить на 0 и ловить исключение, если можно проверить сразу после ввода и показать тост, не проводя операцию деления.
0
1 / 1 / 0
Регистрация: 24.11.2018
Сообщений: 54
16.06.2020, 09:08  [ТС]
Это можно сделать если у меня все числа и знаки операции вводятся в одно окно edittext?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
16.06.2020, 10:26
Это не имеет значения, проверку можно вставить в любом месте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.06.2020, 10:26
Помогаю со студенческими работами здесь

Деление знаковых чисел с выводом ошибки "Деление на ноль"
Собственно поставили передо мной задачу - написать прогу деления двух чисел, причем что бы учитывался знак, и помимо всего прочего при...

Деление на ноль
День добрый! Нужна помошь! Как возможно обойти деления на ноль? :0

деление на ноль
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace...

Деление на ноль
Вот основная программа (спасибо тем, кто помог написать её, многое понял): {$ASMMODE INTEL} var x,a,b:longint; begin ...

Деление на ноль
В каких современных языках программирования до сих пор не реализовано автоматическое устранение зависания системы, если произойдет деление...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru