Страница 13 из 14
Re: Урок 19. Пишем простой калькулятор
Добавлено: 06 ноя 2015, 19:41
doter.ua
Андрей Валентинович писал(а): как добавлять списком? Чтоб один результат не заменял другой, а результаты складывались?
Сделай результат 0, и складывай ответы вместо присвоения.
sum = 0;
...
sum += result;
Re: Урок 19. Пишем простой калькулятор
Добавлено: 08 ноя 2015, 22:01
Андрей Валентинович
doter.ua писал(а):Андрей Валентинович писал(а): как добавлять списком? Чтоб один результат не заменял другой, а результаты складывались?
Сделай результат 0, и складывай ответы вместо присвоения.
sum = 0;
...
sum += result;
Всё равно один результат заменяет другой.
Re: Урок 19. Пишем простой калькулятор
Добавлено: 24 ноя 2015, 11:31
Zak_uska
У меня проблема, выводится на экран
null перед началом строки в
mResult.setText( r ); и далее цифры как и задумано, как убрать null? я понимаю что проблема в String, но где?
Код: Выделить всё
package net.zak_uska.gridlayouts;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
private int mCount = 0;
private float result = 0;
private String r ;
TextView mResult;
TextView mResult2;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mResult = (TextView) findViewById(R.id.resmedia);
mResult2 = (TextView) findViewById(R.id.resmedia1);
}
public void onButtonClick(View view) {
//Вводим переменные, с которыми будем оперировать:
float result1 = 0;
float result2 = 0;
switch (view.getId()) {
case R.id.btn1:
result1 += ++mCount ;
result += 1 ; // это float для подсчета
r += 1; // это String и выводится как текст
result2 = result / result1;
break;
case R.id.btn2:
result1 += ++mCount ;
result += 2 ;
r += 2;
result2 = result / result1;
break;
case R.id.btn3:
result1 += ++mCount ;
result += 3 ;
r += 3;
result2 = result / result1;
break;
case R.id.btn4:
result1=+ ++mCount ;
result += 4 ;
r += 4;
result2 = result / result1;
break;
default:
break;
}
//настраиваем отображение результата:
mResult.setText( r );
//настраиваем отображение результата:
mResult2.setText("Средняя "+result2+ " есть");
}
}
Решил
private String r = new String() ;
И новая проблема с удалением по одной последней введенной цифры. По ходу весь код переписать придётся (
и вот результат на Google Play
http://bit.ly/1QZuj4C что мне и нужно было, школята рады и учителя)
Re: Урок 19. Пишем простой калькулятор
Добавлено: 31 дек 2015, 14:51
WKBAPKA
Я вычитал в одной книге реализацию обработки события методом обратного вызова
Код: Выделить всё
View.OnClickListener mBtnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
}
};
промучался несколько часов пока разобрался что куда, но работает
Re: Урок 19. Пишем простой калькулятор
Добавлено: 31 дек 2015, 16:30
WKBAPKA
вот полный код с реализацией метода обратного вызова
Код: Выделить всё
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.view.View;
public class MainActivity extends Activity {
EditText etNum1;
EditText etNum2;
Button btnAdd;
Button btnSub;
Button btnMult;
Button btnDiv;
TextView tvResult;
String oper = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
View.OnClickListener mBtnClick = new View.OnClickListener() {
@Override
public void onClick(View v) {
float num1 =0;
float num2 =0;
float result =0;
if (TextUtils.isEmpty(etNum1.getText().toString())
|| TextUtils.isEmpty(etNum2.getText().toString())) {
return;
}
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());
switch (v.getId()) {
case R.id.btnAdd:
oper = "+";
result = num1 + num2;
break;
case R.id.btnDiv:
oper = "/";
result = num1 / num2;
break;
case R.id.btnMult:
oper = "*";
result = num1 * num2;
break;
case R.id.btnSub:
oper = "-";
result = num1 - num2;
break;
default:
break;
}
tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result);
}
};
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnDiv = (Button) findViewById(R.id.btnDiv);
btnMult = (Button) findViewById(R.id.btnMult);
btnSub = (Button) findViewById(R.id.btnSub);
btnSub.setOnClickListener(mBtnClick);
btnDiv.setOnClickListener(mBtnClick);
btnMult.setOnClickListener(mBtnClick);
btnAdd.setOnClickListener(mBtnClick);
tvResult = (TextView) findViewById(R.id.tvResult);
}
}
Re: Урок 19. Пишем простой калькулятор
Добавлено: 04 янв 2016, 01:24
Руслан777
Подскажите пожайлуста как быть с таким результатом(код сильно не менял , как в уроке) result = num2 * 0.075/150/num1, ответ получается например = 6.0Е-4 а должно было 0.0006
Re: Урок 19. Пишем простой калькулятор
Добавлено: 05 янв 2016, 11:07
Saavinovka
Руслан777 писал(а):Подскажите пожайлуста как быть с таким результатом(код сильно не менял , как в уроке) result = num2 * 0.075/150/num1, ответ получается например = 6.0Е-4 а должно было 0.0006
ну, по сути, 6.0Е-4 и есть 0,0006. попробуйте явно преобразовать result к строковому типу
tvResult.setText(num1 + " " + oper + " " + num2 + " = " +
String.valueOf(result);
Re: Урок 19. Пишем простой калькулятор
Добавлено: 06 фев 2016, 13:26
real56
подскажите что не так постоянно сложение
Код: Выделить всё
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import static java.lang.Float.parseFloat;
import static java.lang.String.*;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button b1, b2, b3, b4, b5, b6, b7, b8, b9, b0, bm, bp, bu, bd, bpr, br, bc; //17
TextView text1, text2;
//String oper1 = "";
char oper1 = '0';
double temp = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1 = (TextView) findViewById(R.id.text1);
text2 = (TextView) findViewById(R.id.text2);
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
b3 = (Button) findViewById(R.id.b3);
b4 = (Button) findViewById(R.id.b4);
b5 = (Button) findViewById(R.id.b5);
b6 = (Button) findViewById(R.id.b6);
b7 = (Button) findViewById(R.id.b7);
b8 = (Button) findViewById(R.id.b8);
b9 = (Button) findViewById(R.id.b9);
b0 = (Button) findViewById(R.id.b0);
bm = (Button) findViewById(R.id.bm);
bp = (Button) findViewById(R.id.bp);
bu = (Button) findViewById(R.id.bu);
bd = (Button) findViewById(R.id.bd);
bpr = (Button) findViewById(R.id.bpr);
br = (Button) findViewById(R.id.br);
bc = (Button) findViewById(R.id.bc);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
b3.setOnClickListener(this);
b4.setOnClickListener(this);
b5.setOnClickListener(this);
b6.setOnClickListener(this);
b7.setOnClickListener(this);
b8.setOnClickListener(this);
b9.setOnClickListener(this);
b0.setOnClickListener(this);
bp.setOnClickListener(this);
bm.setOnClickListener(this);
bd.setOnClickListener(this);
bu.setOnClickListener(this);
bpr.setOnClickListener(this);
br.setOnClickListener(this);
bc.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// float num1 = 0;
// float num2 = 0;
// float result = 0;
switch (v.getId()) {
//Дообавлени текста в поле text1
case R.id.b1:
text1.setText(text1.getText() + "1");
break;
case R.id.b2:
text1.setText(text1.getText() + "2");
break;
case R.id.b3:
text1.setText(text1.getText() + "3");
break;
case R.id.b4:
text1.setText(text1.getText() + "4");
break;
case R.id.b5:
text1.setText(text1.getText() + "5");
break;
case R.id.b6:
text1.setText(text1.getText() + "6");
break;
case R.id.b7:
text1.setText(text1.getText() + "7");
break;
case R.id.b8:
text1.setText(text1.getText() + "8");
break;
case R.id.b9:
text1.setText(text1.getText() + "9");
break;
case R.id.b0:
text1.setText(text1.getText() + "0");
break;
//Операции
case R.id.bp:
oper1 = '+';
temp = Double.valueOf(valueOf(text1.getText()));
text1.setText("");
break;
case R.id.bm:
oper1 = '-';
temp = Double.valueOf(valueOf(text1.getText()));
text1.setText("");
break;
case R.id.bu:
oper1 = '*';
temp = Double.valueOf(valueOf(text1.getText()));
text1.setText("");
break;
case R.id.bd:
oper1 = '/';
temp = Double.valueOf(valueOf(text1.getText()));
text1.setText("");
break;
case R.id.br:
case '+':
text2.setText(valueOf(temp + Double.valueOf(valueOf(text1.getText()))));
break;
case '-':
text2.setText(valueOf(temp - Double.valueOf(valueOf(text1.getText()))));
break;
case R.id.bc:
temp = 0;
text1.setText("");
text2.setText("");
break;
default:
break;
Re: Урок 19. Пишем простой калькулятор
Добавлено: 12 фев 2016, 12:05
drkoh
Zak_uska писал(а):У меня проблема, выводится на экран
null
и вот результат на Google Play
http://bit.ly/1QZuj4C что мне и нужно было, школята рады и учителя)
Только русский язык бы подучить.. "Расчитай среднею" - это сильно...
Re: Урок 19. Пишем простой калькулятор
Добавлено: 15 май 2016, 10:52
xebeche
Ребят, я пытаюсь написать калькулятор немного по-другому. Конструктором switch в поле textView выставляется оператор, а следующий конструктор свич должен считать оператор с textview и уже выполнить логику. Как мне указать в switch что он должен считать с текствью символ?
вот
Re: Урок 19. Пишем простой калькулятор
Добавлено: 13 июн 2016, 14:14
DreadThar
Хороший алгоритм калькулятора, не составит труда переделать под Android
https://github.com/indy256/codelibrary/ ... Calc2.java
Re: Урок 19. Пишем простой калькулятор
Добавлено: 05 ноя 2016, 23:50
Johniker
Хочу что бы вместо очистки полей из меню, была возможность очистки через кнопку. Для этого создал кнопку c id/btnDelete, все прописал, но при нажатии поля etNum1 и etNum2 очищаются, а tvResult нет. В чем может быть проблема?
Код: Выделить всё
package com.example.p0191_simplecalculator;
import android.content.ClipData;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText etNum1, etNum2;
Button btnAdd, btnSub, btnMult, btnDiv;
Button btnDelete, btnExit;
TextView tvResult;
String oper = "";
final int MENU_RESET_ID = 1;
final int MENU_QUIT_ID = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnSub = (Button) findViewById(R.id.btnSub);
btnMult = (Button) findViewById(R.id.btnMult);
btnDiv = (Button) findViewById(R.id.btnDiv);
btnDelete = (Button) findViewById(R.id.btnDelete);
btnExit = (Button) findViewById(R.id.btnExit);
tvResult = (TextView) findViewById(R.id.tvResult);
// Прописываем обработчик
btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnMult.setOnClickListener(this);
btnDiv.setOnClickListener(this);
btnDelete.setOnClickListener(this);
btnExit.setOnClickListener(this);
}
// создание меню
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_RESET_ID, 0, "Сброс");
menu.add(0, MENU_QUIT_ID, 0, "Выход");
return super.onCreateOptionsMenu(menu);
}
//Обработка нажатий на пункты меню
public boolean onOptionsItemSelected (MenuItem item){
switch (item.getItemId()){
case MENU_RESET_ID:
etNum1.setText("");
etNum2.setText("");
tvResult.setText("");
Toast.makeText(this, "Очищено",Toast.LENGTH_SHORT).show();
break;
case MENU_QUIT_ID:
finish();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
float num1 = 0;
float num2 = 0;
float result = 0;
//Проверяем поля на пустоту
if (TextUtils.isEmpty(etNum1.getText().toString()) || TextUtils.isEmpty(etNum2.getText().toString())){
Toast.makeText(this, "Введите значения в поля", Toast.LENGTH_SHORT).show();
return;
}
// читаем EditText и заполняем переменные числами
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());
// определяем нажатую кнопку и выполняем соответствующую операцию
// в oper пишем операцию, потом будем использовать в выводе
switch (v.getId()) {
case R.id.btnAdd:
oper = "+";
result = num1 + num2;
break;
case R.id.btnSub:
oper = "-";
result = num1 - num2;
break;
case R.id.btnMult:
oper = "*";
result = num1 * num2;
break;
case R.id.btnDiv:
oper = "/";
result = num1 / num2;
if (num2==0) {tvResult.setText("На ноль делить нельзя");
etNum2.setText("");
return; }
break;
case R.id.btnExit:
finish();
break;
case R.id.btnDelete:
etNum1.setText("");
etNum2.setText("");
tvResult.setText("");
break;
default:
break;
}
// формируем строку вывода
tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result );
}
}
Re: Урок 19. Пишем простой калькулятор
Добавлено: 15 дек 2016, 15:06
Foxy
Ребят, всем привет
Вот столкнулся с проблемой уже не в первый раз, не получается использовать Activity как обработчик, но до этого исправлял все простым созданием отельного обработчика OnClickListener.
Вроде все как положено, изменяю вот эту строчку:
Код: Выделить всё
public class MainActivity extends AppCompatActivity
на такую:
Код: Выделить всё
public class MainActivity extends AppCompatActivity implements View.OnClickListener
Но она подчеркивается красным, всплывающая подсказка говорит:
Class must either be declared abstract or implement abstract method
Погуглил, говорят надо дописать @Override.. Но что-то по-моему проблема в другом.
Re: Урок 19. Пишем простой калькулятор
Добавлено: 15 дек 2016, 16:38
oleg_en
Foxy писал(а):Ребят, всем привет
Вот столкнулся с проблемой уже не в первый раз, не получается использовать Activity как обработчик, но до этого исправлял все простым созданием отельного обработчика OnClickListener.
Вроде все как положено, изменяю вот эту строчку:
Код: Выделить всё
public class MainActivity extends AppCompatActivity
на такую:
Код: Выделить всё
public class MainActivity extends AppCompatActivity implements View.OnClickListener
Но она подчеркивается красным, всплывающая подсказка говорит:
Class must either be declared abstract or implement abstract method
Погуглил, говорят надо дописать @Override.. Но что-то по-моему проблема в другом.
Привет, все нормально. Ты имплементировал интерфейс, теперь обязательно должен переопределить методы. Стань на строчку и нажми CTRL + I и выбери методы, студия их сгенерирует. После этого можно указывать Activity в обработчиках. Например btn.SetOnClickListener(this)
Re: Урок 19. Пишем простой калькулятор
Добавлено: 16 дек 2016, 13:12
Foxy
voleg_en, вот как, благодарю! Опробую сегодня..
Re: Урок 19. Пишем простой калькулятор
Добавлено: 03 янв 2017, 22:23
johnrich
Если быть честным я реально начал с нуля и недавно но цель изучить хорошенько и как можно больше.
Если это всё ещё активно я не смог придумать или т.п. как мне сделать чтобы не возможно было делить на ноль, подскажите люди добрые.
Re: Урок 19. Пишем простой калькулятор
Добавлено: 04 янв 2017, 09:47
oleg_en
johnrich писал(а):Если быть честным я реально начал с нуля и недавно но цель изучить хорошенько и как можно больше.
Если это всё ещё активно я не смог придумать или т.п. как мне сделать чтобы не возможно было делить на ноль, подскажите люди добрые.
Как вариант, обернуть операцию в try
try {
System.out.println(1/0);
} catch (ArithmeticException e) {
System.out.println("Произошла недопустимая арифметическая операция");
}
Re: Урок 19. Пишем простой калькулятор
Добавлено: 04 янв 2017, 10:03
zzFraerOKzz
Понимаю что пишу не по теме но написал по теме месяц игнорируют пост поэтому уже простите пишу просто в активную тему Помогите с Уроком №3 ???
Re: Урок 19. Пишем простой калькулятор
Добавлено: 04 янв 2017, 10:11
oleg_en
zzFraerOKzz писал(а):Понимаю что пишу не по теме но написал по теме месяц игнорируют пост поэтому уже простите пишу просто в активную тему Помогите с Уроком №3 ???
Подробнее ...
Re: Урок 19. Пишем простой калькулятор
Добавлено: 06 фев 2017, 16:04
Iosif
Не появляется меню с очисткой полей и выхода из приложения, подскажите, что не так сделал:
полный код:
package ru.startandroid.develop.calculator;
import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements View.OnClickListener {
EditText etNum1;
EditText etNum2;
Button btnAdd;
Button btnSub;
Button btnMult;
Button btnDiv;
TextView tvResult;
String oper = "";
final int MENU_RESET_ID = 1;
final int MENU_QUIT_ID = 2;
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// находим элементы
etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);
btnAdd = (Button) findViewById(R.id.btnAdd);
btnSub = (Button) findViewById(R.id.btnSub);
btnMult = (Button) findViewById(R.id.btnMult);
btnDiv = (Button) findViewById(R.id.btnDiv);
tvResult = (TextView) findViewById(R.id.tvResult);
// прописываем обработчик
btnAdd.setOnClickListener(this);
btnSub.setOnClickListener(this);
btnMult.setOnClickListener(this);
btnDiv.setOnClickListener(this);
}
// создание меню
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_RESET_ID, 0, "Reset");
menu.add(0, MENU_QUIT_ID, 0, "Quit");
return super.onCreateOptionsMenu(menu);
}
// обработка нажатий на пункты меню
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_RESET_ID:
// очищаем поля
etNum1.setText("");
etNum2.setText("");
tvResult.setText("");
Toast.makeText(this, "Очищено",Toast.LENGTH_SHORT).show();
break;
case MENU_QUIT_ID:
// выход из приложения
finish();
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
float num1 = 0;
float num2 = 0;
float result = 0;
//Проверяем поля на пустоту
if (TextUtils.isEmpty(etNum1.getText().toString()) || TextUtils.isEmpty(etNum2.getText().toString())){
Toast.makeText(this, "Введите значения в поля", Toast.LENGTH_SHORT).show();
return;
}
// читаем EditText и заполняем переменные числами
num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());
// определяем нажатую кнопку и выполняем соответствующую операцию
// в oper пишем операцию, потом будем использовать в выводе
switch (v.getId()) {
case R.id.btnAdd:
oper = "+";
result = num1 + num2;
break;
case R.id.btnSub:
oper = "-";
result = num1 - num2;
break;
case R.id.btnMult:
oper = "*";
result = num1 * num2;
break;
case R.id.btnDiv:
oper = "/";
result = num1 / num2;
break;
default:
break;
}
// формируем строку вывода
tvResult.setText(num1 + " " + oper + " " + num2 + " = " + result);
}
}