Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/15: Рейтинг темы: голосов - 15, средняя оценка - 4.73
 Аватар для _Dasha_
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 64

Конвертер температур (Цельсий - Фаренгейт)

09.02.2015, 16:01. Показов 3258. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, для курсовой нужно разработать приложение, я только учусь этому. Вот, что у меня получается:

Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
 
import static ru.val.carat.R.id;
import static ru.val.carat.R.id.button;
import static ru.val.carat.R.id.button2;
 
 
public class MainActivity6 extends ActionBarActivity implements View.OnClickListener {
 
   
    EditText etNum1;
    EditText etNum2;
    Button btn1;
    Button btn2;
    double pos1, pos2;
    double chislo;
    double result = 0;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
 
        etNum1 = (EditText) findViewById(id.editText);
        etNum2 = (EditText) findViewById(id.editText2);
        btn1 = (Button) findViewById(button);
        btn1.setOnClickListener(this);
        btn2 = (Button) findViewById(button2);
        btn2.setOnClickListener(this);
        Spinner spin = (Spinner) findViewById(R.id.spinner);
        Spinner spin2 = (Spinner) findViewById(R.id.spinner2);
 
        // адаптер
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.terma, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(adapter);
        ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(
                this, R.array.terma, android.R.layout.simple_spinner_item);
        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin2.setAdapter(adapter2);
 
        if (TextUtils.isEmpty(etNum1.getText().toString()) || TextUtils.isEmpty(etNum2.getText().toString())) {
            return;
        }
        ;
        chislo = Float.parseFloat(etNum1.getText().toString());
        result = Float.parseFloat(etNum2.getText().toString());
        pos1 = spin.getSelectedItemPosition();
        if (pos1 == 0) {
            pos2 = spin2.getSelectedItemPosition();
 
            if (pos2 == 0) {
 
                result = chislo;
            }
            if (pos2 == 1) {
 
                result = ((chislo * 1.8) + 32);
            }
            if (pos2 == 2) {
 
                result = ((chislo - 273) * 1.8 + 32);
            }
 
        }
        if (pos1 == 1) {
 
            pos2 = spin2.getSelectedItemPosition();
 
            if (pos2 == 0) {
 
                result = (chislo * 1.8 - 32);
            }
            if (pos2 == 1) {
 
                result = chislo;
            }
            if (pos2 == 2) {
 
                result = ((chislo - 32) * 5 / 9 + 273.15);
            }
        }
        if (pos1 == 2) {
            pos2 = spin2.getSelectedItemPosition();
 
            if (pos2 == 0) {
 
                result = chislo - 273;
            }
            if (pos2 == 1) {
 
                result = ((chislo - 273.15) * 1.8 + 32);
            }
            if (pos2 == 2) {
 
                result = chislo;
            }
        }
    };
 
 
        // устанавливаем обработчик нажатия
 
    public void onClick(View v) {
        switch (v.getId()) {
            case id.button:
                etNum2.setText("" + result);
                break;
 
            case id.button2:
                etNum1.setText("");
                etNum2.setText("");
                break;
            default:
                break;
 
        }
    }
}
Не могу разобраться, почему не считает.
Миниатюры
Конвертер температур (Цельсий - Фаренгейт)  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.02.2015, 16:01
Ответы с готовыми решениями:

Добавить в класс метод для преобразования температур (Цельсий <-> Фаренгейт)
Здравствуйте! Есть вот такая задача: Создайте новый класс и назовите его TemperatureConverter. Добавьте в него метод для преобразования...

Конвертер цельсий в фаренгейт и наоборот
По заданию должен был написать код, который будет переводить Фаренгейт в Цельсий и наоборот, вроде написал, но что-то все равно не так,...

Конвертер Цельсий/Фаренгейт, необходимо устранить ошибки
1) не выводит дробные значения (ошибку выдает) 2) при очистке график не изменяется.

17
 Аватар для dajver
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
09.02.2015, 22:55
что то мне подсказывает что вы не обновляете адаптер спиннера при каждом просчете.
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 10:05
Эх, Даша, Даша...
Возьмите распечатайте свой код и сбоку "идите" по нему с карандашом в руках.
Вы всё поймёте.
0
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
10.02.2015, 11:45
Что то я не могу понять логики..
Зачем тут вообще спиннеры?? Как я понял, это просто должен получиться конвертер, где нужно переводить температуру, введенную в зависимости от EditText ( либо цельсий, либо фаренгейт) путем нажатия кнопки "Посчитать". У вас слишком как то странно все намучено и закручено.
Объясните задумку своего приложения.
Я бы сделал, к примеру, первый пришедший вариант в голову, одно поле для ввода и второе для вывода результата. 2 Кнопки - цельсий и фаренгейт. В зависимости от нажатой выводится результат.
У вас совсем борода непонятная.. Не понял логики и задумки..
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 11:50
Цитата Сообщение от Hedd Посмотреть сообщение
Зачем тут вообще спиннеры??
Затем, что в спиннерах выбирается из чего и во что переводить.

С задумкой у неё всё в порядке.
Вот с логикой - что, где откуда брать и когда вычислять - да, в коде проблемка.
Для этого и нужен карандаш.
0
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
10.02.2015, 11:54
Armagedo, хм, а что будет, если в обоих полях введено значение? Тут по логике нужно одно поле для ввода - сверху, а внизу просто TextView. А почему не работает - вы считаете при запуске активити, когда все значения равны нулю. Нужно пересчитывать при нажатии на кнопку.
0
10.02.2015, 11:54

Не по теме:

или вообще одно поле ввода, два текстовых поля и кнопка "Посчитать"

в поле ввода, например, вводим число 42 и нажимаем "Посчитать" - в текстовых полях выводим что-то типа
42 по цельию = 100500 по фаренгейту
42 по фаренгейту = мульен по цельсию

и сами вычисления надо делать не в onCreate, а к примеру, в обработчике нажатий на кнопку

0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 11:58
Цитата Сообщение от Spelcrawler Посмотреть сообщение
Armagedo, хм, а что будет, если в обоих полях введено значение? Тут по логике нужно одно поле для ввода - сверху, а внизу просто TextView.
Я где-то с этим спорил?

Цитата Сообщение от Spelcrawler Посмотреть сообщение
А почему не работает - вы считаете при запуске активити, когда все значения равны нулю. Нужно пересчитывать при нажатии на кнопку.
Так народ никогда ничему не научится...

Впрочем кому какая разница
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
10.02.2015, 11:59
Hedd,
Цитата Сообщение от Hedd Посмотреть сообщение
Не понял логики и задумки..
На счет задумки - как мне представляется ТС хочет сделать конвертер не только для температуры.
Здесь по всей видимости может быть и масса и валюта к примеру.
Исходя из этого и был выбран спинер.
На счет логики - действительно она здесь храмает.
Условия проверки должны быть в связаны с нажатием кнопки. У ТС они почему то в onCreate
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 12:05
Тот факт, что модераторы подрихтовали наименование самой темы, совсем не означает, что она была таковой до их вмешательства.

Существует несколько различных единиц измерения температуры.

Наиболее известными являются следующие:

Градус Цельсия
Градус Фаренгейта
Кельвин (до 1968 года градус Кельвина)
Градус Реомюра
Градус Рёмера
Градус Ранкина
Градус Делиля
Градус Гука
Градус Дальтона
Градус Ньютона
Лейденский градус
https://ru.wikipedia.org/wiki/... 1%80%D1%8B
Так что верните название темы назад и оставьте в покое спиннеры

В остальном - секрет успеха уже раскрыт.
Осталась вдумчивая реализация.
0
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
10.02.2015, 12:10
Хм.. А что на счет real-time конвертации ? К примеру, значение одного поля меняется сразу же во время ввода другого..
0
400 / 343 / 85
Регистрация: 17.10.2014
Сообщений: 1,015
10.02.2015, 12:14
Hedd, TextWatcher Вам в помощь
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 12:14
Цитата Сообщение от Hedd Посмотреть сообщение
А что на счет real-time конвертации ?
Повесьте на первый Edittext текствотчера...
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
10.02.2015, 14:12
Мне кажется цвет нужен другой, оранжевый как-то не смотрится, приложение то серьезное.
1
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
10.02.2015, 14:14
Сейчас от такого потока идей приложение само напишется и побьет все топы.
0
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
10.02.2015, 14:15
Цитата Сообщение от Rube Посмотреть сообщение
Мне кажется цвет нужен другой, оранжевый как-то не смотрится, приложение то серьезное.
Глядя на аскера, розовенький - будет в самый раз
0
14 / 14 / 2
Регистрация: 21.01.2015
Сообщений: 131
10.02.2015, 14:35
Rube, Моя первая мысль была, что экран полностью выделен, такой же цвет на моем аппарате.
0
 Аватар для _Dasha_
0 / 0 / 0
Регистрация: 19.12.2013
Сообщений: 64
11.02.2015, 09:23  [ТС]
Два дня не могла выйти в нэт. Разобралась сама в коде.
Всем спасибо за советы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2015, 09:23
Помогаю со студенческими работами здесь

Фаренгейт и Цельсий
Друзья! В книге по С++ есть програмка вывода таблицы температур по фаренгейту и цельсию. Запускаю ее в MS Visual C++ 2008. Вот...

Функция Цельсий и Фаренгейт
Есть задача: Напишите следующие функции:  Функция celsius, которая возвращает температуру по Цельсию, эквивалентную температуре по...

Ошибки - цельсий в фаренгейт
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void Filework(float* r,...

Преобразование температуры Фаренгейт-Цельсий
Друзья! Кто поможет с объяснение, как реализовать данную задачку? класс TemperatureConverter. метод для преобразования...

Функция преобразования температуры из Фаренгейт в Цельсий
Прошу помочь разобраться в проблеме, возникающей при компилляции данной программы. #include &lt;stdio.h&gt; #define lower 0 //нижний...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru