質問編集履歴
2
不要な部分の削除
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Android Studioで電卓を作りたいのですが
|
1
|
+
Android Studioで電卓を作りたいのですがエラーメッセージが大量に出てしまいました。
|
body
CHANGED
File without changes
|
1
不要な行番号の削除
title
CHANGED
File without changes
|
body
CHANGED
@@ -96,168 +96,169 @@
|
|
96
96
|
### 該当のソースコード
|
97
97
|
|
98
98
|
```kotlin
|
99
|
-
|
99
|
+
package com.example.dentaku1
|
100
|
-
|
100
|
+
|
101
|
-
|
101
|
+
import androidx.appcompat.app.AppCompatActivity
|
102
|
-
|
102
|
+
import android.os.Bundle
|
103
|
-
|
103
|
+
import kotlinx.android.synthetic.main.activity_main.*
|
104
|
-
|
104
|
+
|
105
|
-
|
105
|
+
class MainActivity : AppCompatActivity() {
|
106
|
-
|
106
|
+
|
107
|
-
|
107
|
+
var nStr : String = ""
|
108
|
-
|
108
|
+
val nList = ArrayList<Double>() // arraylist to store numbers
|
109
|
-
|
109
|
+
val oList = ArrayList<Char>() // arraylist to store operations
|
110
|
-
|
110
|
+
|
111
|
-
|
111
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
112
|
-
|
112
|
+
super.onCreate(savedInstanceState)
|
113
|
-
|
113
|
+
setContentView(R.layout.activity_main)
|
114
|
-
|
114
|
+
|
115
|
-
|
115
|
+
num0.setOnClickListener {
|
116
|
-
|
116
|
+
formula.text = "${formula.text}0"
|
117
|
-
|
117
|
+
nStr += "0"
|
118
|
-
|
118
|
+
}
|
119
|
-
|
119
|
+
num1.setOnClickListener {
|
120
|
-
|
120
|
+
formula.text = "${formula.text}1"
|
121
|
-
|
121
|
+
nStr += "1"
|
122
|
-
|
122
|
+
}
|
123
|
-
|
123
|
+
num2.setOnClickListener {
|
124
|
-
|
124
|
+
formula.text = "${formula.text}2"
|
125
|
-
|
125
|
+
nStr += "2"
|
126
|
-
|
126
|
+
}
|
127
|
-
|
127
|
+
num3.setOnClickListener {
|
128
|
-
|
128
|
+
formula.text = "${formula.text}3" nStr += "3"
|
129
|
-
31 nStr += "3"
|
130
129
|
32 }
|
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
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
130
|
+
3
|
131
|
+
num4.setOnClickListener {
|
132
|
+
formula.text = "${formula.text}4"
|
133
|
+
nStr += "4"
|
134
|
+
}
|
135
|
+
num5.setOnClickListener {
|
136
|
+
formula.text = "${formula.text}5"
|
137
|
+
nStr += "5"
|
138
|
+
}
|
139
|
+
num6.setOnClickListener {
|
140
|
+
formula.text = "${formula.text}6"
|
141
|
+
nStr += "6"
|
142
|
+
}
|
143
|
+
num7.setOnClickListener {
|
144
|
+
formula.text = "${formula.text}7"
|
145
|
+
nStr += "7"
|
146
|
+
}
|
147
|
+
num8.setOnClickListener {
|
148
|
+
formula.text = "${formula.text}8"
|
149
|
+
nStr += "8"
|
150
|
+
}
|
151
|
+
num9.setOnClickListener {
|
152
|
+
formula.text = "${formula.text}9"
|
153
|
+
nStr += "9"
|
154
|
+
}
|
155
|
+
point.setOnClickListener {
|
156
|
+
formula.text = "${formula.text}."
|
157
|
+
nStr += "."
|
158
|
+
}
|
159
|
+
equal.setOnClickListener {
|
160
|
+
formula.text = "${formula.text}="
|
161
|
+
addList(nStr)
|
162
|
+
var result = calcualte().toString()
|
163
|
+
formula.text = result
|
164
|
+
nStr = result
|
165
|
+
nList.clear()
|
166
|
+
oList.clear()
|
167
|
+
}
|
168
|
+
add.setOnClickListener {
|
169
|
+
formula.text = "${formula.text}+"
|
170
|
+
addList(nStr,'+')
|
171
|
+
nStr = ""
|
172
|
+
}
|
173
|
+
subtract.setOnClickListener {
|
174
|
+
formula.text = "${formula.text}-"
|
175
|
+
addList(nStr,'-')
|
176
|
+
nStr = ""
|
177
|
+
}
|
178
|
+
multiply.setOnClickListener {
|
179
|
+
formula.text = "${formula.text}*"
|
180
|
+
addList(nStr,'*')
|
181
|
+
nStr = ""
|
182
|
+
}
|
183
|
+
divide.setOnClickListener {
|
184
|
+
formula.text = "${formula.text}/"
|
185
|
+
addList(nStr,'/')
|
186
|
+
nStr = ""
|
187
|
+
}
|
188
|
+
delete.setOnClickListener {
|
189
|
+
var formulaStr = formula.text.toString()
|
190
|
+
if (!formulaStr.isEmpty()) {
|
191
|
+
formula.text = formulaStr.subSequence(0,formulaStr.lastIndex)
|
192
|
+
}
|
193
|
+
if (!nStr.isEmpty()) {
|
194
|
+
nStr = nStr.substring(0, nStr.lastIndex)
|
195
|
+
}
|
196
|
+
}
|
197
|
+
percent.setOnClickListener {
|
198
|
+
formula.text = "${formula.text}%"
|
199
|
+
}
|
200
|
+
sign.setOnClickListener {
|
201
|
+
|
202
|
+
}
|
203
|
+
clear.setOnClickListener {
|
204
|
+
formula.text = ""
|
205
|
+
nStr = ""
|
206
|
+
nList.clear()
|
207
|
+
oList.clear()
|
208
|
+
}
|
209
|
+
|
210
|
+
} // end fun onCreate
|
211
|
+
|
212
|
+
fun addList(str : String, ope : Char) {
|
213
|
+
try {
|
214
|
+
var num = str.toDouble()
|
215
|
+
nList.add(num)
|
216
|
+
oList.add(ope)
|
217
|
+
}catch(e:Exception){
|
218
|
+
formula.text = "Numeric error"
|
219
|
+
}
|
220
|
+
}
|
221
|
+
|
222
|
+
fun addList(str : String) {
|
223
|
+
try {
|
224
|
+
var num = str.toDouble()
|
225
|
+
nList.add(num)
|
226
|
+
}catch(e:Exception){
|
227
|
+
formula.text = "Numeric error"
|
228
|
+
}
|
229
|
+
}
|
230
|
+
|
231
|
+
fun calcualte() : Double {
|
232
|
+
|
233
|
+
var i = 0
|
234
|
+
while (i < oList.size) {
|
235
|
+
//do multiplication and division first
|
236
|
+
if(oList.get(i) == '*' || oList.get(i) == '/') {
|
237
|
+
var result = if (oList.get(i) == '*') nList.get(i) *
|
238
|
+
nList.get(i+1) else nList.get(i) / nList.get(i+1)
|
239
|
+
nList.set(i,result)
|
240
|
+
nList.removeAt(i+1)
|
241
|
+
oList.removeAt(i)
|
242
|
+
i--
|
243
|
+
}
|
244
|
+
// change subtraction to addition
|
245
|
+
else if(oList.get(i) == '-'){
|
246
|
+
oList.set(i,'+')
|
247
|
+
nList.set(i+1,nList.get(i+1) * -1)
|
248
|
+
}
|
249
|
+
i++
|
250
|
+
}
|
251
|
+
|
252
|
+
// get sum
|
253
|
+
var result = 0.0
|
254
|
+
for (i in nList){
|
255
|
+
result += i
|
256
|
+
}
|
257
|
+
|
258
|
+
return result
|
259
|
+
}// end fun calcualte
|
260
|
+
|
261
|
+
} // end class
|
261
262
|
```
|
262
263
|
|
263
264
|
### 試したこと
|