Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

25.05.2014, 10:30. Просмотров 644. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Условие внутри метода (Программирование Android):

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

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

Не срабатывает условие проверки метода - C#
public string SearcheNumber(string n) { if (Int32.Parse(n) <= 10 && Int32.Parse(n) <= 999) { ...

.NET 4.x Update внутри метода - C#
Решил вывести заполнитель листбокса из кнопки в отдельный метод. Visual Studio ругается на Update() (строка 91) Ошибка CS0120 Для...

Секундомер внутри метода - C#
Необходимо зафиксировать время обработки изображения. То есть запускается обработка изображения вместе с таймером и, когда получаем...

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

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

Условие внутри на картинке - Delphi
Вот, приклепленное изобржение 3.26

Условие if внутри printf - PHP
Есть такой код: $res = mysql_query ("SELECT * FROM contacts",$db); $row = mysql_fetch_array ($res); do { printf (" <div>Контакты...

Вызвать метод внутри метода - PHP ООП
Hello world! В общем суть такова: есть класс admin, который содержит метод: news, внутри которого содержатся методы:...

Обработчики событий внутри метода - jQuery
(function($){ jQuery.fn.newMetod = function(){ //какие то действия с объектом через this $(".drop-menu").click(function(){ ...


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

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

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