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

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

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

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

25.05.2014, 10:30. Просмотров 547. Ответов 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     Условие внутри метода
Посмотрите здесь:

Android Переопределение метода в Runtime
Android Вызов метода из класса в таймере
Вызов метода из другого Activity Android
Библиотека для REST метода Android
Android Ошибка создания виртуального метода?
Android Не выполняется условие if
Android Обращение из статического метода
Android условие if
Получение переменной из метода Android
Android Нет метода addOnScrollListener в RecycleView
Android Вызов java метода из native
Android Вызов метода в onCreate()

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1565 / 1307 / 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
25 / 25 / 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
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
25.05.2014, 12:24     Условие внутри метода #4
Цитата Сообщение от phpk Посмотреть сообщение
if(s=="+"){
В java строки не сравниваются так (так как == сравнивает ссылки, а String это immutable объект).
Измените на s.equals("+")
phpk
25 / 25 / 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