Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
phpk
26 / 29 / 13
Регистрация: 15.05.2013
Сообщений: 1,152
#1

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

25.05.2014, 10:30. Просмотров 660. Ответов 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 минуты
подскажите, что не так в коде, почему ошибка?

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.05.2014, 10:30
Ответы с готовыми решениями:

[JVM] Почему в Java можно возвращать из метода массив, созданный внутри этого метода и размещенный в стеке?
Пишу на C, и там нельзя возвратить указатель на массив созданный внутри...

Получить имя метода внутри самого метода
function myFunc() { console.log(arguments.callee.name); } myFunc();...

Объект внутри объекта / метод внутри метода
Салам, братва. Я вроде как новичок в ООП... Не подскажите, что это такое в...

Не срабатывает условие проверки метода
public string SearcheNumber(string n) { if...

Переменные внутри метода
Заметил такую вещь, что внутри метода создают временную переменную и...

4
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 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; и проблем не будет.
1
phpk
26 / 29 / 13
Регистрация: 15.05.2013
Сообщений: 1,152
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();
    }
    
 
}
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
25.05.2014, 12:24 #4
Цитата Сообщение от phpk Посмотреть сообщение
if(s=="+"){
В java строки не сравниваются так (так как == сравнивает ссылки, а String это immutable объект).
Измените на s.equals("+")
1
phpk
26 / 29 / 13
Регистрация: 15.05.2013
Сообщений: 1,152
25.05.2014, 13:32  [ТС] #5
Цитата Сообщение от YuraAAA Посмотреть сообщение
В java строки не сравниваются так (так как == сравнивает ссылки, а String это immutable объект).
Измените на s.equals("+")
постоянно забываю про equals
благодарю!
0
25.05.2014, 13:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.05.2014, 13:32

Update внутри метода
Решил вывести заполнитель листбокса из кнопки в отдельный метод. Visual Studio...

Секундомер внутри метода
Необходимо зафиксировать время обработки изображения. То есть запускается...

Условие if внутри printf
Есть такой код: $res = mysql_query ("SELECT * FROM contacts",$db); $row =...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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