Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,068
#1

Условие внутри метода - Программирование Android

25.05.2014, 10:30. Просмотров 564. Ответов 4
Метки нет (Все метки)

Откуда взялась ошибка "Variable 'd' might not have been initialized" в 54 строке?
Разве я неправильно присваиваю значение переменной d ?
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
public class MainActivity extends Activity 
      implements OnClickListener
{
    Button b1,b2,bres;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b1=(Button)findViewById(R.id.but1);
        //b1.setText("1");
        b2=(Button)findViewById(R.id.but2);
        bres=(Button)findViewById(R.id.res);
 
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        bres.setOnClickListener(this);
        
    }
    
    public void onClick(View v){
        if(v.getId()==b1.getId()){
            show("1");
        }
        else if(v.getId()==b2.getId()){
            show("2");
        }
        else if(v.getId()==bres.getId()){
            show(Double.toString(result()));
        }
    }
    
    public double result(){
        double d,i,j;
        i=2;
              //...
        j=3;
 
        String s="+";
 
        if(s=="+"){
            d=i+j;
        }
        if(s=="-"){
            d=i-j;
        }
        if(s=="*")
            d=i*j;
        if(s=="/")
            d=i/j;
 
        //d=i+j;
        return d;
    }
    
    public void show(String s){
        Toast toast=Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT);
        toast.show();
    }
    
}
Добавлено через 12 часов 44 минуты
подскажите, что не так в коде, почему ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2014, 10:30     Условие внутри метода
Посмотрите здесь:

условие if - Программирование Android
Здравствуйте.У меня почемуто не работает условие if Вот код userCursor2 = db.rawQuery("select * from user_lang", null); ...

Получение переменной из метода - Программирование Android
Здравствуйте уважаемые форумчане. Есть проблемка одна, надо получить обработанную переменную soapXml С Данными из метода public...

Переопределение метода в Runtime - Программирование Android
Создаем класс именно так BroadcastReceiver receiver = new BroadcastReceiver(); Дальше, надо в receiver переопределить onReceive....

Обращение из статического метода - Программирование Android
Очень интересно вот что: В уроке 120 проекта startandroid есть статический метод в классе MyWidget, который обращается к не-статическим...

Вызов метода в onCreate() - Программирование Android
Здравствуйте.Пытаюсь загружать сохраненные данные при старте приложения и сохранять при выходе с помощью Preferences. Добавлял написанные...

Не работает условие - Программирование Android
Привет всем. Пишу код регистрационной формы. Есть 2 EditTexta пароль и подтвердите пароль как бы.Потом через условие проверяю на длину...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
25.05.2014, 10:40     Условие внутри метода #2
phpk, в java инициализация работает следующим образом.
Переменные, объявленные вне методов (глобальные) инициализируются по умолчанию (0/null).
Переменные, объявленные внутри метода (локальные) должны инициализироваться вручную.

Java
1
2
3
4
double d,i,j;
        i=2;
              //...
        j=3;
i и j Вы определили, а d - нет.
Напишите d = 0; и проблем не будет.
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,068
25.05.2014, 12:09  [ТС]     Условие внутри метода #3
ниже привёл упрощенный вариант калькулятора.
Цитата Сообщение от YuraAAA Посмотреть сообщение
Напишите d = 0; и проблем не будет.
тогда почему в строке 138 после набора уравнения и нажатия кнопки "=" пишет что равно 0 ?
Метод result() (строки 146-171) должен возвращать результат i по отношению к j .
i - это 1-й операнд, j - 2-й, s - знак операции +-*/

И 2-й вопрос: почему в строке 158 show(Double.toString(d)); эта операция не работает?
Т.е. не выводит значение d на экран?

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
public class MainActivity extends Activity
   implements OnClickListener
{
    private EditText edit;
    private Button b1;
    private Button b2;
    private Button b3;
    private Button b4;
    private Button b5;
    private Button b6;
    private Button b7;
    private Button b8;
    private Button b9;
    private Button b0;
    private Button bdel;
    private Button bres;
    private Button badd;
    private Button bmin;
    private Button bmult;
    private Button bdiv;
    private Button bc;
    private Button bpr;
    private Button bpnt;
    String txt="";
    double x,y,res;
    String tmp="+-*/";
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        Log.i("test","start");
        setContentView(R.layout.main);
        
        b1=(Button)findViewById(R.id.mainButton1);
        b2=(Button)findViewById(R.id.mainButton2);
        b3=(Button)findViewById(R.id.mainButton3);
        b4=(Button)findViewById(R.id.mainButton4);
        b5=(Button)findViewById(R.id.mainButton5);
        b6=(Button)findViewById(R.id.mainButton6);
        b7=(Button)findViewById(R.id.mainButton7);
        b8=(Button)findViewById(R.id.mainButton8);
        b9=(Button)findViewById(R.id.mainButton9);
        b0=(Button)findViewById(R.id.mainButton0);
        bdel=(Button)findViewById(R.id.mainButtonDelete);
        bres=(Button)findViewById(R.id.mainButtonResult);
        badd=(Button)findViewById(R.id.mainButtonAdd);
        bmin=(Button)findViewById(R.id.mainButtonMinus);
        bmult=(Button)findViewById(R.id.mainButtonMult);
        bdiv=(Button)findViewById(R.id.mainButtonDivide);
        bc=(Button)findViewById(R.id.mainButtonC);
        bpr=(Button)findViewById(R.id.mainButtonpr);
        bpnt=(Button)findViewById(R.id.mainButtonPnt);
        edit=(EditText)findViewById(R.id.table);
        edit.setText("0");
 
        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);
        bdel.setOnClickListener(this);
        bres.setOnClickListener(this);
        badd.setOnClickListener(this);
        bmin.setOnClickListener(this);
        bmult.setOnClickListener(this);
        bdiv.setOnClickListener(this);
        bc.setOnClickListener(this);
        bpr.setOnClickListener(this);
        bpnt.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v)
    {
        if(v.getId()==b1.getId()){
            txt+="1";
        }
        else if(v.getId()==b2.getId()){
            txt+="2";
        }
        else if(v.getId()==b3.getId()){
            txt+="3";
        }
        else if(v.getId()==b4.getId()){
            txt+="4";
        }
        else if(v.getId()==b5.getId()){
            txt+="5";
        }
        else if(v.getId()==b6.getId()){
            txt+="6";
        }
        else if(v.getId()==b7.getId()){
            txt+="7";
        }
        else if(v.getId()==b8.getId()){
            txt+="8";
        }
        else if(v.getId()==b9.getId()){
            txt+="9";
        }
        else if(v.getId()==b0.getId()){
            txt+="0";
        }
        else if(v.getId()==badd.getId()){
                txt+="+";
        }
        else if(v.getId()==bmin.getId()){
                txt+="-";
        }
        else if(v.getId()==bmult.getId()){
                txt+="*";
        }
        else if(v.getId()==bdiv.getId()){
                txt+="/";
        }
        else if(v.getId()==bdel.getId()){
            txt=txt.substring(0,txt.length()-1);
        }
        else if(v.getId()==bc.getId()){
            txt="";
            edit.setText("0");
        }
        else if(v.getId()==bpr.getId()){
            double r=result(txt);
            r=r/100;
            txt=Double.toString(r);
        }
        else if(v.getId()==bpnt.getId()){
            txt+=".";
        }
        else if(v.getId()==bres.getId()){
            txt=Double.toString(result(txt));
        }
        
        edit.setText(txt);
        
    }
    
    public double result(String t){
        double d=0,i,j;
        //i=Double.parseDouble(t.substring(0,func(t,2)));
        i=Double.parseDouble(t.substring(0,1));
        
        //j=Double.parseDouble(t.substring(func(t,2)+1));
        j=Double.parseDouble(t.substring(2));
 
        String s=t.substring(1,2);   // s - один из операторов +-*/
        //show(s);
        if(s=="+"){
            d=i+j;
            show(Double.toString(d));
        }
        if(s=="-"){
            d=i-j;
            //show(Double.toString(d));
        }
        if(s=="*")
            d=i*j;
        if(s=="/")
            d=i/j;
    //  d=i+j;
        //show(Double.toString(i)+s+Double.toString(j));
        return d;
    }
    
    public void show(String s){
        Toast toast=Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT);
        toast.show();
    }
    
 
}
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
25.05.2014, 12:24     Условие внутри метода #4
Цитата Сообщение от phpk Посмотреть сообщение
if(s=="+"){
В java строки не сравниваются так (так как == сравнивает ссылки, а String это immutable объект).
Измените на s.equals("+")
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2014, 13:32     Условие внутри метода
Еще ссылки по теме:

Не выполняется условие if - Программирование Android
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? В результате "сложных" логических исследований ошибок кода, я пришел...

Вызов метода из другого класса - Программирование Android
Не могу разобраться, почему вылетает приложение, когда пытаюсь задать текст для TextView в MainActivity из другого класса. Подскажите...

Вызов метода из другого Activity - Программирование Android
Здраствуйте. Помогите,пожалуйста, разобраться с несколькими вопросами: 1) Правильно ли, что "Настройки" я выделил в отдельный Activity ...

Библиотека для REST метода - Программирование Android
Какую вы посоветуете? 1)Groundy 2)Retrofit 3)AnnotatedSQL 4)Android db-commons 5)Android Annotations Нужна библиотека лишь для...

Ошибка создания виртуального метода? - Программирование Android
Здравствуйте, хочу сделать так что бы программа(на андроид) рисовала по заданным координатам, но столкнулся со следующей ошибкой: ...

Вызов java метода из native - Программирование Android
Привет, чтот не пойму зачем у меня ошибка происходит... Значит что хочу и что происходит. Есть активити с TextView и кнопкой. В...


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

Или воспользуйтесь поиском по форуму:
phpk
26 / 26 / 6
Регистрация: 15.05.2013
Сообщений: 1,068
25.05.2014, 13:32  [ТС]     Условие внутри метода #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
В java строки не сравниваются так (так как == сравнивает ссылки, а String это immutable объект).
Измените на s.equals("+")
постоянно забываю про equals
благодарю!
Yandex
Объявления
25.05.2014, 13:32     Условие внутри метода
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru