Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 16 дек 2018, 15:42

Часовой пояс: UTC + 3 часа


Правила форума


О возможности разместить информацию о вашем приложении на главной странице сайта читайте здесь: http://startandroid.ru/ru/about/pomosch ... henii.html



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Моя первая программа
СообщениеДобавлено: 26 дек 2012, 23:14 

Зарегистрирован: 23 дек 2012, 22:58
Сообщений: 58
Откуда: UZB Namangan
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.
Как смог написал. Моя первая программа. Калькулятор. Код тоже выложу
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. import android.os.Bundle;
  2. import android.app.Activity;
  3. import android.view.Menu;
  4. import android.view.MenuItem;
  5. import android.view.View;
  6. import android.widget.TextView;
  7.  
  8. public class MainActivity extends Activity {
  9.         double prev;
  10.         TextView tv;
  11.         boolean isEmpty;
  12.  
  13.         final int ADD = 1, REMOVE = 2, MULTI = 3, DIVIDE = 4, EQUALS = 5;
  14.         int LAST_ACTION = 0;
  15.  
  16.         @Override
  17.         protected void onCreate(Bundle savedInstanceState) {
  18.                 super.onCreate(savedInstanceState);
  19.                 setContentView(R.layout.activity_main);
  20.  
  21.                 prev = 0;
  22.                 tv = (TextView) findViewById(R.id.TextView1);
  23.                 isEmpty = true;
  24.         }
  25.  
  26.         @Override
  27.         public boolean onCreateOptionsMenu(Menu menu) {
  28.                 // Inflate the menu; this adds items to the action bar if it is present.
  29.                 getMenuInflater().inflate(R.menu.activity_main, menu);
  30.                 return true;
  31.         }
  32.  
  33.         @Override
  34.         public boolean onOptionsItemSelected(MenuItem item) {
  35.  
  36.                 // TODO Auto-generated method stub
  37.                 finish();
  38.                 return super.onOptionsItemSelected(item);
  39.         }
  40.  
  41.         public void onclick(View v) {
  42.  
  43.                 switch (v.getId()) {
  44.                 case R.id.ButtonClear:
  45.                         tv.setText("0.0");
  46.  
  47.                         break;
  48.                 case R.id.Button01:
  49.                         if (isEmpty) {
  50.                                 tv.setText("1");
  51.                                 isEmpty = false;
  52.                         } else
  53.                                 tv.setText(tv.getText().toString() + 1);
  54.                         break;
  55.                 case R.id.Button02:
  56.                         if (isEmpty) {
  57.                                 tv.setText("2");
  58.                                 isEmpty = false;
  59.                         } else
  60.                                 tv.setText(tv.getText().toString() + 2);
  61.                         break;
  62.                 case R.id.Button03:
  63.                         if (isEmpty) {
  64.                                 tv.setText("3");
  65.                                 isEmpty = false;
  66.                         } else
  67.                                 tv.setText(tv.getText().toString() + 3);
  68.                         break;
  69.                 case R.id.Button04:
  70.                         if (isEmpty) {
  71.                                 tv.setText("4");
  72.                                 isEmpty = false;
  73.                         } else
  74.  
  75.                                 tv.setText(tv.getText().toString() + 4);
  76.                         break;
  77.                 case R.id.Button05:
  78.                         if (isEmpty) {
  79.                                 tv.setText("5");
  80.                                 isEmpty = false;
  81.                         } else
  82.                                 tv.setText(tv.getText().toString() + 5);
  83.                         break;
  84.                 case R.id.Button06:
  85.                         if (isEmpty) {
  86.                                 tv.setText("6");
  87.                                 isEmpty = false;
  88.                         } else
  89.  
  90.                                 tv.setText(tv.getText().toString() + 6);
  91.                         break;
  92.                 case R.id.Button07:
  93.                         if (isEmpty) {
  94.                                 tv.setText("7");
  95.                                 isEmpty = false;
  96.                         } else
  97.  
  98.                                 tv.setText(tv.getText().toString() + 7);
  99.                         break;
  100.                 case R.id.Button08:
  101.                         if (isEmpty) {
  102.                                 tv.setText("8");
  103.                                 isEmpty = false;
  104.                         } else
  105.  
  106.                                 tv.setText(tv.getText().toString() + 8);
  107.                         break;
  108.                 case R.id.Button09:
  109.                         if (isEmpty) {
  110.                                 tv.setText("9");
  111.                                 isEmpty = false;
  112.                         } else
  113.  
  114.                                 tv.setText(tv.getText().toString() + 9);
  115.                         break;
  116.                 case R.id.buttonDot:
  117.                         if (isEmpty) {
  118.                                 tv.setText("0.");
  119.                                 isEmpty = false;
  120.                         } else
  121.  
  122.                                 tv.setText(tv.getText().toString() + ".");
  123.                         break;
  124.                 case R.id.button0:
  125.                         if (isEmpty) {
  126.  
  127.                         } else
  128.  
  129.                                 tv.setText(tv.getText().toString() + 0);
  130.                         break;
  131.                 case R.id.imageButtonDelete:
  132.                         if (isEmpty)
  133.                                 ;
  134.                         else if (tv.getText().toString().length() == 1) {
  135.                                 tv.setText("0.0");
  136.                                 isEmpty = true;
  137.                         } else
  138.  
  139.                                 tv.setText(tv.getText().toString()
  140.                                                 .substring(0, tv.getText().toString().length() - 1));
  141.                         break;
  142.                 case R.id.ButtonSqrt:
  143.                         double sqrt = Math
  144.                                         .sqrt(Double.parseDouble(tv.getText().toString()));
  145.                         tv.setText(String.valueOf(sqrt));
  146.                         break;
  147.  
  148.                 case R.id.imageButtonAdd:
  149.                         // Недоделанный код
  150.                         prev = Double.parseDouble(tv.getText().toString());
  151.                         LAST_ACTION = ADD;
  152.                         tv.setText("0.0");
  153.                         isEmpty = true;
  154.                         break;
  155.                 case R.id.imageButtonRemov:
  156.                         LAST_ACTION = REMOVE;
  157.                         prev = Double.parseDouble(tv.getText().toString());
  158.                         tv.setText("0.0");
  159.                         isEmpty = true;
  160.  
  161.                         break;
  162.                 case R.id.imageButtonMultiplication:
  163.                         LAST_ACTION = MULTI;
  164.                         prev = Double.parseDouble(tv.getText().toString());
  165.                         tv.setText("0.0");
  166.                         isEmpty = true;
  167.                         break;
  168.                 case R.id.buttonDivide:
  169.                         LAST_ACTION = DIVIDE;
  170.                         prev = Double.parseDouble(tv.getText().toString());
  171.                         tv.setText("0.0");
  172.                         isEmpty = true;
  173.                         break;
  174.                 case R.id.imageButtonEquals:
  175.                         calc();
  176.                         break;
  177.                 case R.id.buttonAbs:
  178.                         tv.setText(String.valueOf(Double.parseDouble(tv.getText()
  179.                                         .toString()) * -1));
  180.                         break;
  181.                 }
  182.         }
  183.  
  184.         public void calc() {
  185.                 switch (LAST_ACTION) {
  186.                 case ADD:
  187.                         tv.setText(String.valueOf(prev
  188.                                         + Double.parseDouble(tv.getText().toString())));
  189.                         break;
  190.                 case REMOVE:
  191.                         tv.setText(String.valueOf(prev
  192.                                         - Double.parseDouble(tv.getText().toString())));
  193.                         break;
  194.                 case MULTI:
  195.                         tv.setText(String.valueOf(prev
  196.                                         * Double.parseDouble(tv.getText().toString())));
  197.                         break;
  198.                 case DIVIDE:
  199.                         tv.setText(String.valueOf(prev
  200.                                         / Double.parseDouble(tv.getText().toString())));
  201.                         break;
  202.  
  203.                 }
  204.         }
  205. }
  206.  


Вложения:
Комментарий к файлу: Тут АПК
Calculator.7z [160.03 KiB]
Скачиваний: 200

_________________
Изображение
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 26 дек 2012, 23:52 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
Не качал но по коду пробежался. Первое, что попалось в глаза так это то что текст (нули, точки и т.д.) не вынесены в ресурсы или лучше даже сделать их константами. Второе, это наименование некоторых переменных оставляет желать лучшего. Третье, это константы пишутся в верхнем регистре, переменные в нижнем, у вас в коде не всегда это соответствует истине. Четвёртое, нету проверки на существующую точку, я могу жать на точку бесконечное число раз. Пятое, нету проверок деления на ноль и переполнения буфера.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 27 дек 2012, 09:40 

Зарегистрирован: 23 дек 2012, 22:58
Сообщений: 58
Откуда: UZB Namangan
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.
rezak90 писал(а):
Не качал но по коду пробежался. Первое, что попалось в глаза так это то что текст (нули, точки и т.д.) не вынесены в ресурсы или лучше даже сделать их константами. Второе, это наименование некоторых переменных оставляет желать лучшего. Третье, это константы пишутся в верхнем регистре, переменные в нижнем, у вас в коде не всегда это соответствует истине. Четвёртое, нету проверки на существующую точку, я могу жать на точку бесконечное число раз. Пятое, нету проверок деления на ноль и переполнения буфера.

Спасибо вам большое. Вот таких и осуждении я ждал. Вопрос почему Тексты надо вынести на ресурсы? Почему так принято?

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 27 дек 2012, 10:51 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
выносят по двум причинам: 1) если понадобится локализация то нужно поменять только в одном месте и это удобно; 2) если нужно использовать "текст" более чем один раз, то его придётся писать заного к тому же заного инициализировать, а так есть уже константа под которую выделена память, к тому же менять только один раз придётся если понадобиться.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 27 дек 2012, 17:19 

Зарегистрирован: 23 дек 2012, 22:58
Сообщений: 58
Откуда: UZB Namangan
Благодарил (а): 5 раз.
Поблагодарили: 1 раз.
Всё исправил. Работает на ура. Я собой горжусь.

_________________
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 27 дек 2012, 17:36 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
behzodbek писал(а):
Всё исправил. Работает на ура. Я собой горжусь.

сделай больше операций, а то плюс, минус, делить и умножить как то мало... хотя бы корень, квадрат, синусы и косинусы, ну можно добавить ещё и перевод в двоичную и шестн. системы.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Моя первая программа
СообщениеДобавлено: 29 дек 2012, 11:20 
Аватар пользователя

Зарегистрирован: 16 июл 2012, 21:37
Сообщений: 439
Благодарил (а): 0 раз.
Поблагодарили: 27 раз.
God object =)

_________________
CEO of a company R.id.team


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


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

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB