Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Java > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 06.10.2017, 22:58   #1
vlad13reg
Новичок
 
Регистрация: 06.10.2017
Сообщений: 3
Репутация: 10
Сообщение Обычный калькулятор

я новичок в android , в принципе как и в программировании.
Дали задание написать калькулятор. У меня не срабатывает кнопка "=", при нажатии на приложение останавливается и вылетает...

https://jsfiddle.net/kqxne9b6/296/ - xml код
И сам код
Код:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import butterknife.BindView;
import butterknife.ButterKnife;


public class MainActivity extends AppCompatActivity {
    private String display = "";
    private String currentOperator = "";
    @BindView(R.id.buttonEnter)
    TextView buttonEnter;


    @BindView(R.id.textResult)
    TextView textResult;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        textResult.setText(display);


    }

    private void updateScreen() {
        textResult.setText(display);
    }

    public void onClickNumber(View view) {
        Button b = (Button) view;
        display += b.getText();
        updateScreen();
    }

    public void onClickOperator(View view) {
        Button b = (Button) view;
        display += ((Button) view).getText();
        currentOperator = b.getText().toString();
        updateScreen();
    }

    protected void clear() {
        display = "";
        currentOperator = "";
    }

    public void onClickClear(View view) {
        clear();
        updateScreen();
    }

    private double operate(String a, String b) {
        double result = 0;
        switch (currentOperator) {
            case "+":
                result = Double.valueOf(a) + Double.valueOf(b);
                break;
            case "-":
                result = Double.valueOf(a) - Double.valueOf(b);
                break;
            case "*":
                result = Double.valueOf(a) * Double.valueOf(b);
                break;
            case "/":
                try {
                    result = Double.valueOf(a) / Double.valueOf(b);
                } catch (Exception e) {
                    System.out.println("Деление на 0");
                }
                break;
        }
        return result;
    }

    public void getResult(View view) {
        Button b = (Button) view;
        double result = 0;
        String[] split = display.split(currentOperator);
        result = operate(split[0], split[1]);
        b.setText(String.valueOf(result));
        textResult.setText(display + "\n" + String.valueOf(result));
    }
}


Последний раз редактировалось Аватар; 06.10.2017 в 23:42.
vlad13reg вне форума   Ответить с цитированием
Старый 10.10.2017, 11:44   #2
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,544
Репутация: 581

icq: 446.452.423
По умолчанию

лучше так не делать. Это плохая практива, когда вешается событие их XML.

Вот так будет лучше. (просто пример)


Код:

import android.view.View.OnClickListener;

public class MClass extends ActionBarActivity {

    Button my_btn_a;
    Button my_btn_b;
    Button my_btn_c;
    Button my_btn_d;

    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        my_btn_a = (Button) findViewById( R.id.my_btn_a );
        my_btn_b = (Button) findViewById( R.id.my_btn_b );
        my_btn_c = (Button) findViewById( R.id.my_btn_c );
        my_btn_d = (Button) findViewById( R.id.my_btn_d );

        OnClickListener mOnClickListener = new OnClickListener() {
            @Override
            public void onClick(View view) {

                switch (view.getId()) {

                    case R.id.my_btn_a: func_A(); break;
                    case R.id.my_btn_b: func_B(); break;
                    case R.id.my_btn_c: func_C(); break;
                    case R.id.my_btn_d: func_D(); break;
                }
            }
        }

        my_btn_a.setOnClickListener( mOnClickListener );
        my_btn_b.setOnClickListener( mOnClickListener );
        my_btn_c.setOnClickListener( mOnClickListener );
        my_btn_d.setOnClickListener( mOnClickListener );

    }

}

__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Старый 10.10.2017, 17:33   #3
vlad13reg
Новичок
 
Регистрация: 06.10.2017
Сообщений: 3
Репутация: 10
По умолчанию

Спасибо Вам за совет
vlad13reg вне форума   Ответить с цитированием
Старый 10.10.2017, 22:28   #4
pompiduskus
юзер как все
Профессионал
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Адрес: земля
Сообщений: 1,544
Репутация: 581

icq: 446.452.423
По умолчанию

получилось хоть ?
__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k
pompiduskus вне форума   Ответить с цитированием
Старый 10.10.2017, 22:31   #5
vlad13reg
Новичок
 
Регистрация: 06.10.2017
Сообщений: 3
Репутация: 10
По умолчанию

Да, ещё изменил строку [CODE]String[] split = display.split(currentOperator);
[/CODE

На
Код:

String[] split = display.split(Pattern.quote(current operator));

vlad13reg вне форума   Ответить с цитированием
Ответ



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузчик из KOL в обычный. alex0097 Общие вопросы Delphi 2 13.07.2017 21:48
Обычный счетчик linkoln_7 ASP.NET 1 16.10.2014 16:41
Обычный INSERT viks1 БД в Delphi 8 03.05.2013 00:14
обычный цикл emdroof C# (си шарп) 0 26.03.2013 22:16
Обычный и инженерный калькуляторы Alex Cones Свободное общение 31 15.04.2010 08:02




14:28.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


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

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru