Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Програмирование платформенно-независимых систем > Eclipse
Перезагрузить страницу Как сделать расчет?
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
goldarnit goldarnit вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2013
По умолчанию Как сделать расчет? - 29.09.2013, 15:24

Делаю приложение, которое определят затраты на бензин во время поездки.
Пользователь сам вводит цену на бензин и расстояние.
Потом там 5 кнопок для пяти разных машин (с разными расходами бензина).
Вот собственно код ( CASE - глупо добавила , есть предложения? Помощь нужна только в выделенной части кода):

EditText etNum1;
EditText etNum2;

Button B1;
Button B2;
Button B3;
Button B4;
Button B5;

TextView tvResult;

String oper = "";


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


etNum1 = (EditText) findViewById(R.id.etNum1);
etNum2 = (EditText) findViewById(R.id.etNum2);

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);

tvResult = (TextView) findViewById(R.id.tvResult);

B1.setOnClickListener(this);
B2.setOnClickListener(this);
B3.setOnClickListener(this);
B4.setOnClickListener(this);
B5.setOnClickListener(this);
}

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())) {
return;
}


num1 = Float.parseFloat(etNum1.getText().toString());
num2 = Float.parseFloat(etNum2.getText().toString());



switch (v.getId()) {
case R.id.B1:
oper = "*";
result = num1 * num2 * 0.096;
break;

case R.id.B2:
oper = "*";
result = num1 * num2 * 0.093;
break;

case R.id.B3:
oper = "*";
result = num1 * num2 * 0.106;
break;
case R.id.B4:
oper = "*";
result = num1 * num2 * 0.102;
break;
case R.id.B5:
oper = "*";
result = num1 * num2 * 0.108;
break;

default:
break;
}

// формируем строку вывода
tvResult.setText( result);

}
}
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,390
Сказал(а) спасибо: 22
Поблагодарили 934 раз(а) в 918 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 29.09.2013, 15:57

А в чём именно проблема?
Ответить с цитированием
  (#3 (permalink)) Старый
goldarnit goldarnit вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2013
По умолчанию 29.09.2013, 17:06

Цитата:
Сообщение от Rius Посмотреть сообщение
А в чём именно проблема?
Дело в том, что тут дабл кейс, т.к. везде проходит одна и та же операция oper"*"
И я не знаю, можно ли в резалте умножать на число
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,390
Сказал(а) спасибо: 22
Поблагодарили 934 раз(а) в 918 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 29.09.2013, 17:30

Можно ил нельзя, зависит от алгоритма.
Что такое дабл кейс?
cpp Код:
oper = "*";
можно поставить перед свитчем.

Если вам такой код не нравится, то это очень хорошо. В таком случае рекомендую книжку
Паттерны проектирования
Head First Design Patterns
Автор: Э. Фримен, Э. Фримен, К. Сьерра, Б. Бейтс
.
Там рассмотрены случаи, применимые и у вас.
Ответить с цитированием
  (#5 (permalink)) Старый
goldarnit goldarnit вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2013
По умолчанию 29.09.2013, 17:59

[QUOTE=Rius;750940]Можно ил нельзя, зависит от алгоритма.
Что такое дабл кейс?
cpp Код:
oper = "*";
можно поставить перед свитчем.

Пардон, duplicate case.
Все равно не работает
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,390
Сказал(а) спасибо: 22
Поблагодарили 934 раз(а) в 918 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 29.09.2013, 18:12

Что-то я туплю, или java сильно отличается от C/C++/C# ?
Или раз duplicate case, то в где-то среди R.id.B1 ... R.id.B5 есть одинаковые значения?
Ответить с цитированием
  (#7 (permalink)) Старый
goldarnit goldarnit вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2013
По умолчанию 29.09.2013, 18:18

Цитата:
Сообщение от Rius Посмотреть сообщение
Что-то я туплю, или java сильно отличается от C/C++/C# ?
Или раз duplicate case, то в где-то среди R.id.B1 ... R.id.B5 есть одинаковые значения?
case R.id.B1:
result = num1 * num2 * 0.096;
break;

case R.id.B2:

result = num1 * num2 * 0.093;
break;

case R.id.B3:

result = num1 * num2 * 0.106;
break;

case R.id.B4:

result = num1 * num2 * 0.102;
break;
case R.id.B5:


Значения должны быть разными, может он не считывает цифры? Если не считывает, то значения везде одинаковые
Ответить с цитированием
  (#8 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,390
Сказал(а) спасибо: 22
Поблагодарили 934 раз(а) в 918 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 29.09.2013, 18:35

А в java можно ставить в case не константное выражение?
Если нельзя, вы должны знать эти значения наперёд?

Можно тупо так:
var sw = v.getId();
if (sw == R.id.B1) {
} else if (sw == R.id.B2) {
} else if (sw == R.id.B3) {
} else if (sw == R.id.B4) {
} else if (sw == R.id.B5) {
}
Но лучше паттерны почитайте.
Ответить с цитированием
  (#9 (permalink)) Старый
goldarnit goldarnit вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 29.09.2013
По умолчанию 29.09.2013, 18:39

Цитата:
Сообщение от Rius Посмотреть сообщение
А в java можно ставить в case не константное выражение?
Если нельзя, вы должны знать эти значения наперёд?

Можно тупо так:
var sw = v.getId();
if (sw == R.id.B1) {
} else if (sw == R.id.B2) {
} else if (sw == R.id.B3) {
} else if (sw == R.id.B4) {
} else if (sw == R.id.B5) {
}
Но лучше паттерны почитайте.
If ElSE - хорошая идея! попробую
Что значит var sw?
Ответить с цитированием
  (#10 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,390
Сказал(а) спасибо: 22
Поблагодарили 934 раз(а) в 918 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 29.09.2013, 18:52

Цитата:
Сообщение от goldarnit Посмотреть сообщение
If ElSE - хорошая идея! попробую
вообще, это отстойная идея.
Цитата:
Сообщение от goldarnit Посмотреть сообщение
Что значит var sw?
var - подставьте тип своей переменной сюда, возращаемой из getId()
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расчет суммы заказа Gock PHP 1 28.04.2013 10:40
Расчет порогов для фильтра Канни sanya3112 C++ Builder 0 16.05.2012 00:23
Расчет конечных сумм AlenaSerova Pascal 0 21.11.2011 22:29
Расчет формулы Иван69rus Prolog 1 10.04.2011 20:22
Автоматический расчет беспроводной сети Radagast Алгоритмы 0 28.11.2009 20:56
Расчет выплаты по кредиту berserker Prolog 3 27.04.2009 01:31
Расчет площади текста 095 Delphi 7 18.01.2009 17:15
Расчет по формуле Kirillka Visual Basic 3 25.10.2008 21:30
Расчет числа Пи ArchiDevil C++ Builder 5 20.10.2008 16:44
Расчет Crc8 как это реализовать Gigahard Алгоритмы 3 11.05.2006 22:56
Как сделать расчет + оформление РПЗ GOA Вопросы начинающих программистов 2 19.06.2005 23:45
Расчет ячеек в Workbook Алексей555 Visual Basic 0 03.03.2005 07:44



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов