Урок 19. Пишем простой калькулятор
-
- Сообщения: 3
- Зарегистрирован: 08 окт 2013, 18:19
Re: Урок 19. Пишем простой калькулятор
Помогите, все проблемы с предыдущими уроками решал сам, теперь не могу догнать что не так.
Приложение закрывается по нажатию на любую из кнопок.
Пробовал переписать код, несколько раз создавал проект заново.
Безрезультатно.
Приложение закрывается по нажатию на любую из кнопок.
Пробовал переписать код, несколько раз создавал проект заново.
Безрезультатно.
- Вложения
-
- P0191_SimpleCalculator.zip
- (1.69 МБ) 268 скачиваний
Re: Урок 19. Пишем простой калькулятор
В методе: protected void onCreate(Bundle savedInstanceState)George.Light писал(а):Помогите, все проблемы с предыдущими уроками решал сам, теперь не могу догнать что не так.
Приложение закрывается по нажатию на любую из кнопок.
Пробовал переписать код, несколько раз создавал проект заново.
Безрезультатно.
вы забыли написать строку
tvResult = (TextView) findViewById(R.id.tvResult);
и в файле res/layout/main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
написано было @+od/linearLayout1
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 19. Пишем простой калькулятор
В последней версии SDK 22.2.1 в Intellij Idea пришлось чуть поправить класс:
Код: Выделить всё
public class MainActivity extends Activity implements [b]View.[/b]OnClickListener
Re: Урок 19. Пишем простой калькулятор
Кто как убрал баги с вычислением 5.2 -3 = 2.1999998? если можно с кусками кода пожалста?
Re: Урок 19. Пишем простой калькулятор
Math.round + примерыNik писал(а):Кто как убрал баги с вычислением 5.2 -3 = 2.1999998? если можно с кусками кода пожалста?
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 19. Пишем простой калькулятор
Вопрос не совсем по уроку. Не могу сделать простейшую программку типа введи пароль.
if (editText1.getText().toString() == "verno") всегда ложь хоть и вводишь в поле verno. Уже и так делал.
String slovo="verno";
.....
if (editText1.getText().toString() == slovo)
....
textView5.setText(editText1.getText().toString()+"<>"+slovo);
....
Все равно verno<>verno
Подобная проблема была в php вроде когда типы данных не совпадали. Но тут вроде оба String? Как корректно сравнить "пароль" с образцом?
if (editText1.getText().toString() == "verno") всегда ложь хоть и вводишь в поле verno. Уже и так делал.
String slovo="verno";
.....
if (editText1.getText().toString() == slovo)
....
textView5.setText(editText1.getText().toString()+"<>"+slovo);
....
Все равно verno<>verno
Подобная проблема была в php вроде когда типы данных не совпадали. Но тут вроде оба String? Как корректно сравнить "пароль" с образцом?
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: Урок 19. Пишем простой калькулятор
Подобная проблема у вас явно из-за непонимания очень базовых вещей в Java. Объекты сравниваются через equal, а не через ==. Равно действует только для примитивных типов данныхПодобная проблема была в php вроде когда типы данных не совпадали.
Re: Урок 19. Пишем простой калькулятор
String - это объект. А как объекты сравнивают, через какой оператор?
Foenix - так нужно отвечать?
no-- - меня опередил, но его ответ я ещё не успел прочитать, когда отвечал на вопрос.
Foenix - так нужно отвечать?
no-- - меня опередил, но его ответ я ещё не успел прочитать, когда отвечал на вопрос.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 19. Пишем простой калькулятор
Вообще-то, если ты не заметил, на вопрос уже ответили. Смысла повторяться я не вижу..
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 19. Пишем простой калькулятор
но его ответ я ещё не успел прочитать!!! Т.е. его ответа ещё не было.Foenix писал(а):Вообще-то, если ты не заметил, на вопрос уже ответили. Смысла повторяться я не вижу..
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 19. Пишем простой калькулятор
Спасибо за ответ. Да с Java я на Вы и пытаюсь изучить по урокам на этом сайте.no-- писал(а):Подобная проблема у вас явно из-за непонимания очень базовых вещей в Java. Объекты сравниваются через equal, а не через ==. Равно действует только для примитивных типов данныхПодобная проблема была в php вроде когда типы данных не совпадали.
А идеальным ответом на мой вопрос, наверное была бы эта ссылка.
Пошел читать и пробовать.
-
- Сообщения: 3
- Зарегистрирован: 08 окт 2013, 18:19
Re: Урок 19. Пишем простой калькулятор
Спасибо, действительно помогло, видимо я на скорую руку переписывал в 5й раз проект.trew писал(а):В методе: protected void onCreate(Bundle savedInstanceState)George.Light писал(а):Помогите, все проблемы с предыдущими уроками решал сам, теперь не могу догнать что не так.
Приложение закрывается по нажатию на любую из кнопок.
Пробовал переписать код, несколько раз создавал проект заново.
Безрезультатно.
вы забыли написать строку
tvResult = (TextView) findViewById(R.id.tvResult);
и в файле res/layout/main.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/linearLayout1"
написано было @+od/linearLayout1
Пока исправлял свои ошибки столкнулся с еще одной, дело в том что R.java не обновился при изменении layout, галочка Project>Build Automatically стоит, выкрутился перетаскиванием из своего ошибочного класса od в класс id.
Re: Урок 19. Пишем простой калькулятор
Добрый день!
МОжете посмотреть, пожалуйста, данный код калькулятора:
Подскажите, как его:
1) сократить
2) сделать так, чтоб BigDtcimal при оставлении 4-х знаков, если они все нули, то убирал бы их?
МОжете посмотреть, пожалуйста, данный код калькулятора:
Код: Выделить всё
package com.example.untitled1;
import java.math.BigDecimal;
import java.math.BigInteger;
import android.app.Activity;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import static android.content.DialogInterface.OnClickListener;
public class MyActivity extends Activity implements View.OnClickListener {
/**
* Called when the activity is first created.
*/
double a,b,c;
BigDecimal f;
int d;
TextView result;;
Button btn1;
Button btn2;
Button btn3;
Button btn4;
Button btn5;
Button btn6;
Button btn7;
Button btn8;
Button btn9;
Button btntochka;
Button btn0;
Button btnsbros;
Button plus;
Button minus;
Button proizv;
Button del;
Button ravno;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
result=(TextView) findViewById(R.id.result);
btnsbros=(Button) findViewById(R.id.btnsbros);
plus=(Button) findViewById(R.id.plus);
minus=(Button) findViewById(R.id.minus);
proizv=(Button) findViewById(R.id.proizv);
del=(Button) findViewById(R.id.del);
ravno=(Button) findViewById(R.id.ravno);
btn1=(Button) findViewById(R.id.btn1);
btn2=(Button) findViewById(R.id.btn2);
btn3=(Button) findViewById(R.id.btn3);
btn4=(Button) findViewById(R.id.btn4);
btn5=(Button) findViewById(R.id.btn5);
btn6=(Button) findViewById(R.id.btn6);
btn7=(Button) findViewById(R.id.btn7);
btn8=(Button) findViewById(R.id.btn8);
btn9=(Button) findViewById(R.id.btn9);
btn0=(Button) findViewById(R.id.btn0);
btntochka=(Button) findViewById(R.id.btntochka);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
btn0.setOnClickListener(this);
btntochka.setOnClickListener(this);
btnsbros.setOnClickListener(this);
plus.setOnClickListener(this);
minus.setOnClickListener(this);
proizv.setOnClickListener(this);
del.setOnClickListener(this);
ravno.setOnClickListener(this);
a=b=c=0;
d=0;
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.btnsbros: result.setText("");break;
case R.id.btn1: result.setText(result.getText()+"1");break;
case R.id.btn2: result.setText(result.getText()+"2");break;
case R.id.btn3: result.setText(result.getText()+"3");break;
case R.id.btn4: result.setText(result.getText()+"4");break;
case R.id.btn5: result.setText(result.getText()+"5");break;
case R.id.btn6: result.setText(result.getText()+"6");break;
case R.id.btn7: result.setText(result.getText()+"7");break;
case R.id.btn8: result.setText(result.getText()+"8");break;
case R.id.btn9: result.setText(result.getText()+"9");break;
case R.id.btn0: result.setText(result.getText()+"0");break;
case R.id.btntochka: result.setText(result.getText()+".");break;
case R.id.plus: a=Double.parseDouble(result.getText().toString());
d=1;
result.setText("");
break;
case R.id.minus: a=Double.parseDouble(result.getText().toString());
result.setText("");
d=2;
break;
case R.id.proizv: a=Double.parseDouble(result.getText().toString());
result.setText("");
d=3;
break;
case R.id.del: a=Double.parseDouble(result.getText().toString());
result.setText("");
d=4;
break;
case R.id.ravno: b=Double.parseDouble(result.getText().toString());
switch(d){
case 1: c=a+b;
f = BigDecimal.valueOf(c).setScale(4, BigDecimal.ROUND_HALF_DOWN);
result.setText(""+f);break;
case 2: c=a-b;
f = BigDecimal.valueOf(c).setScale(4, BigDecimal.ROUND_HALF_DOWN);
result.setText(""+f);break;
case 3: c=a*b;
f = BigDecimal.valueOf(c).setScale(4, BigDecimal.ROUND_HALF_DOWN);
result.setText(""+f);break;
case 4:
if(b!=0){
c=a/b;
f = BigDecimal.valueOf(c).setScale(4, BigDecimal.ROUND_HALF_DOWN);
result.setText(""+f);break;}
else {result.setText("Нельзя делить на 0");
}
}
}
}
}
1) сократить
2) сделать так, чтоб BigDtcimal при оставлении 4-х знаков, если они все нули, то убирал бы их?
Re: Урок 19. Пишем простой калькулятор
про нули был вопрос кажется в этой теме уже, чуть выше.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 19. Пишем простой калькулятор
если вы про округление способом math.round, то он не подходит. там определенное количество знаков.Foenix писал(а):про нули был вопрос кажется в этой теме уже, чуть выше.
а как сделать в BigDecimal, чтобы нули не печатал(коли они последние в строке) и чтобы выводил сколько нужно знаков после запятой, а не всегда установленное значение?
ах да, собрал апк файл, но он на телефоне не запускается( не могу понять, в чем проблема(
- Вложения
-
- Калькулятор.rar
- 1
- (37.67 КБ) 225 скачиваний
Re: Урок 19. Пишем простой калькулятор
Удаление незначащих нулей.Ziby писал(а):если вы про округление способом math.round, то он не подходит. там определенное количество знаков.Foenix писал(а):про нули был вопрос кажется в этой теме уже, чуть выше.
а как сделать в BigDecimal, чтобы нули не печатал(коли они последние в строке) и чтобы выводил сколько нужно знаков после запятой, а не всегда установленное значение?
ах да, собрал апк файл, но он на телефоне не запускается( не могу понять, в чем проблема(
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
Re: Урок 19. Пишем простой калькулятор
trew писал(а):Удаление незначащих нулей.Ziby писал(а):если вы про округление способом math.round, то он не подходит. там определенное количество знаков.Foenix писал(а):про нули был вопрос кажется в этой теме уже, чуть выше.
а как сделать в BigDecimal, чтобы нули не печатал(коли они последние в строке) и чтобы выводил сколько нужно знаков после запятой, а не всегда установленное значение?
ах да, собрал апк файл, но он на телефоне не запускается( не могу понять, в чем проблема(
у меня с BigDecimal проблема:
я не создаю новую переменную. я текст беру из TextVew путем result.getText().
И тогда у меня все ругается на несовпадение форматов. приходится пользоваться еще одной переменной, переводя для нее строку в дабл, а потом в еще одну переменную BigDecimal
Код: Выделить всё
a=Float.parseFloat(result.getText().toString());
c=a+b;
f = BigDecimal.valueOf(c).setScale(4, BigDecimal.ROUND_HALF_DOWN);
result.setText(""+f);break;
Код: Выделить всё
double value = 127.0;
//123.456789000000000000;
String str1 = new DecimalFormat("#######.############").format(value);
Log.d(TAG, "str1: " + str1);
Я так понимаю, это некий способ логирования? А можно вас попросить подробней расписать о вашем коде?
Re: Урок 19. Пишем простой калькулятор
Log.d - это способ вывести информацию в лог. Пример показан в уроке 34.Ziby писал(а): я вообще понять не могу. Что за #? Log.d??
Я так понимаю, это некий способ логирования? А можно вас попросить подробней расписать о вашем коде?
А символ # это форматирование. Посмотрите в интернете: javа форматирование чисел.
Ссылки на книжки про java.
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.
-
- Сообщения: 1
- Зарегистрирован: 18 дек 2013, 20:57
Re: Урок 19. Пишем простой калькулятор
Помогите пожалуйста с кодом. Пишу простую прогу для расчета по формуле. В итоге расчетов выводится сообщение "не число". Кто подскажет что я не так делаю?
main_activity.xml
[syntax=java]
[/syntax]
[syntax=java]
[/syntax]
main_activity.xml
[syntax=java]
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableLayout
android:id="@+id/tableLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_margin="10dp"
android:stretchColumns="1" >
<TableRow
android:id="@+id/tableRow5"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvGenderInput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/InputGender">
</TextView>
<RadioGroup
android:id="@+id/rgGender"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/rbMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/gender_male">
</RadioButton>
<RadioButton
android:id="@+id/rbFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/gender_female">
</RadioButton>
</RadioGroup>
</TableRow>
<TableRow
android:id="@+id/tableRow6"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvRaceInput"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/InputRace">
</TextView>
<RadioGroup
android:id="@+id/rgRace"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioButton
android:id="@+id/rbWhite"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/Race_white">
</RadioButton>
<RadioButton
android:id="@+id/rbBlack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/race_black">
</RadioButton>
</RadioGroup>
</TableRow>
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvCreat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/InputCreat">
</TextView>
<EditText
android:id="@+id/editTextCreat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:inputType="numberDecimal" >
</EditText>
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvAge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/InputAge">
</TextView>
<EditText
android:id="@+id/editTextAge"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:inputType="numberDecimal">
</EditText>
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/tvMass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/InputMass">
</TextView>
<EditText
android:id="@+id/editTextMass"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:inputType="numberDecimal">
</EditText>
</TableRow>
<Button
android:id="@+id/btnCalc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:layout_marginLeft="5dp"
android:text="@string/ButtonCalculate">
</Button>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvOutCG"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:text="@string/OutputCG">
</TextView>
<TextView
android:id="@+id/tvOutVal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp">
</TextView>
</TableRow>
</TableLayout>
</RelativeLayout>
[syntax=java]
Код: Выделить всё
package calc.medical.gfr_calculator;
import java.text.DecimalFormat;
import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioGroup;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
EditText editTextCreat;
EditText editTextAge;
EditText editTextMass;
Button btnCalc;
TextView tvOutVal;
RadioGroup rgGender;
RadioGroup rgRace;
private double CG = 0.0, MDRD = 0.0, CKD = 0.0, Creat = 0.0, Sex = 0.0, Rase = 0.0, Age = 0.0, Mass = 0.0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextCreat = (EditText) findViewById(R.id.editTextCreat);
editTextAge = (EditText) findViewById(R.id.editTextAge);
editTextMass = (EditText) findViewById(R.id.editTextMass);
tvOutVal = (TextView) findViewById(R.id.tvOutVal);
rgGender = (RadioGroup) findViewById(R.id.rgGender);
rgRace = (RadioGroup) findViewById(R.id.rgRace);
btnCalc = (Button) findViewById(R.id.btnCalc);
btnCalc.setOnClickListener(this);
rgGender.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (rgGender.getCheckedRadioButtonId()) {
case R.id.rbMale:
Sex = 1.23;
break;
case R.id.rbFemale:
Sex = 1.04;
break;
}
}
});
//проверяем поля на пустоту
if (TextUtils.isEmpty(editTextCreat.getText().toString()) || TextUtils.isEmpty(editTextAge.getText().toString()) || TextUtils.isEmpty(editTextMass.getText().toString())) {
return;
}
// Читаем EditText и заполняем переменную числами
Creat = Double.valueOf(editTextCreat.getText().toString());
Age = Double.valueOf(editTextAge.getText().toString());
Mass = Double.valueOf(editTextMass.getText().toString());
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnCalc:
CG = (((140-(Age))*(Mass)*(Sex)/(Creat)));
DecimalFormat df = new DecimalFormat("#0.##");
tvOutVal.setText(df.format(CG));
}
}
}
Последний раз редактировалось Gannicus24 18 дек 2013, 22:57, всего редактировалось 5 раз.
Re: Урок 19. Пишем простой калькулятор
Выложи файл activity_main.xmlGannicus24 писал(а):Помогите пожалуйста с кодом. Пишу простую прогу для расчета по формуле. В итоге расчетов выводится сообщение "не число". Кто подскажет что я не так делаю?
(и прочитай мою подпись)
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.
Свои сообщения можно редактировать - кнопка edit.