Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

я новичок в 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 в 22:42.
vlad13reg вне форума Ответить с цитированием
Старый 10.10.2017, 10:44   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

лучше так не делать. Это плохая практива, когда вешается событие их 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 );

    }

}
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 10.10.2017, 16:33   #3
vlad13reg
 
Регистрация: 06.10.2017
Сообщений: 3
По умолчанию

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

получилось хоть ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 10.10.2017, 21:31   #5
vlad13reg
 
Регистрация: 06.10.2017
Сообщений: 3
По умолчанию

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

На
Код:
String[] split = display.split(Pattern.quote(current operator));
vlad13reg вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузчик из KOL в обычный. alex0097 Общие вопросы Delphi 2 13.07.2017 20: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