質問編集履歴

10

raisyuFlgの作成と、(youbiNow+1)みたいに囲う

2019/10/03 08:24

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -142,23 +142,27 @@
142
142
 
143
143
  c.add(Calendar.DATE, youbiSa)
144
144
 
145
- txtest.text = "今週の${youbiSa}日後にならす"
145
+ txtest.text = "今週の${youbiSa}日後にならす"
146
-
146
+
147
- break//見つけたらforをやめてOK
147
+ break//見つけたらforをやめてOK
148
-
148
+
149
- }else{
149
+ }
150
+
151
+ if(i==7){//見つからない場合は来週探す
150
152
 
151
153
  raisyuFlg=true
152
154
 
153
155
  }
154
156
 
157
+
158
+
155
159
  }
156
160
 
157
161
  //
158
162
 
159
163
  if(raisyuFlg){
160
164
 
161
- for(i in 1..youbiNow-1) {//来週の予定を検索
165
+ for(i in 1..(youbiNow-1)) {//来週の予定を検索
162
166
 
163
167
  if (kizonYobiAry[i] == 1) {//指定曜日発見
164
168
 

9

今週と来週で2つforにて検索

2019/10/03 08:24

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -128,47 +128,59 @@
128
128
 
129
129
  //------------------------------
130
130
 
131
- //同じ曜日が無い場合・再度チェック
131
+ //今週と来週で2つforにて検索(todayflgで囲ってるのはfor構文負担の軽減のため)
132
+
132
-
133
+ var raisyuFlg=false
134
+
133
- if(todayFlg==false){
135
+ if(todayFlg==false){//今日以外で
134
-
136
+
135
- for(i in 1..7) {
137
+ for(i in (youbiNow+1)..7) {//今週=今日から土曜までを探す
136
-
138
+
137
- if (kizonYobiAry[i] == 1) {
139
+ if (kizonYobiAry[i] == 1) {//指定曜日発見
138
-
140
+
139
-   youbiSa = i - youbiNow//指定曜日から今日曜日を引く
141
+ youbiSa = i - youbiNow//指定曜日から今日曜日を引く
140
-
141
- if (youbiSa > 0) {//曜日差が0を超える だと今週
142
+
142
-
143
- youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
144
-
145
- c.add(Calendar.DATE, youbiSa)
143
+ c.add(Calendar.DATE, youbiSa)
146
-
144
+
147
- if(youbiSa>=7 && todayFlg==false){//7日後+当日は除外
145
+ txtest.text = "今週の${youbiSa}日後にならす"
148
-
146
+
149
- youbiSa=6//強制マイナス1日
147
+ break//見つけたらforをやめてOK
150
-
148
+
151
- } else {
149
+ }else{
150
+
152
-
151
+ raisyuFlg=true
152
+
153
+ }
154
+
155
+ }
156
+
157
+ //
158
+
159
+ if(raisyuFlg){
160
+
161
+ for(i in 1..youbiNow-1) {//来週の予定を検索
162
+
163
+ if (kizonYobiAry[i] == 1) {//指定曜日発見
164
+
165
+ youbiSa = (7 - youbiNow) + i//(カレンダー的数え方。i=指定日・(土曜-今日曜日)+指定日
166
+
153
- c.add(Calendar.DATE, youbiSa)
167
+ c.add(Calendar.DATE, youbiSa)
154
-
168
+
155
- txtest.text = "週の${youbiSa}日後にならす"
169
+ txtest.text = "週の${youbiSa}日後にならす"
156
-
170
+
157
- break//今週中に曜日を見つけたらforをやめてOK
171
+ break//見つけたらforをやめてOK
158
-
172
+
159
- }
173
+ }
160
-
161
- txtest.text = "来週の${youbiSa}日後にならす"
174
+
162
-
163
- }
175
+ }
164
-
176
+
165
- }
177
+ }
166
-
178
+
167
- }
179
+ }
168
-
180
+
169
- }
181
+ }
170
-
171
- }
182
+
183
+
172
184
 
173
185
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
174
186
 

8

ifの順番を曜日前半から調べる

2019/10/03 08:12

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -130,6 +130,8 @@
130
130
 
131
131
  //同じ曜日が無い場合・再度チェック
132
132
 
133
+ if(todayFlg==false){
134
+
133
135
  for(i in 1..7) {
134
136
 
135
137
  if (kizonYobiAry[i] == 1) {
@@ -138,22 +140,22 @@
138
140
 
139
141
  if (youbiSa > 0) {//曜日差が0を超える だと今週
140
142
 
143
+ youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
144
+
141
- c.add(Calendar.DATE, youbiSa)
145
+ c.add(Calendar.DATE, youbiSa)
142
-
143
- txtest.text = "今週の${youbiSa}日後にならす"
144
-
145
- break//今週中に曜日を見つけたらforをやめてOK
146
-
147
- } else {//曜日差がマイナスだと来週
148
-
149
- youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
150
-
151
- c.add(Calendar.DATE, youbiSa)
152
146
 
153
147
  if(youbiSa>=7 && todayFlg==false){//7日後+当日は除外
154
148
 
155
149
  youbiSa=6//強制マイナス1日
156
150
 
151
+ } else {
152
+
153
+ c.add(Calendar.DATE, youbiSa)
154
+
155
+ txtest.text = "今週の${youbiSa}日後にならす"
156
+
157
+ break//今週中に曜日を見つけたらforをやめてOK
158
+
157
159
  }
158
160
 
159
161
  txtest.text = "来週の${youbiSa}日後にならす"
@@ -166,6 +168,8 @@
166
168
 
167
169
  }
168
170
 
171
+ }
172
+
169
173
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
170
174
 
171
175
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓

7

7日後+当日は除外

2019/10/03 07:57

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
  c.add(Calendar.DATE, youbiSa)
152
152
 
153
- if(youbiSa>=7|||| todayFlg==false){//指定と前選ぶと7までカウントしちゃうので
153
+ if(youbiSa>=7 && todayFlg==false){//7後+当は除外
154
154
 
155
155
  youbiSa=6//強制マイナス1日
156
156
 

6

todayFlg=をくわえた

2019/10/03 07:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  //まず同じ曜日を引き出す
76
76
 
77
- var onajiYoubiNum=0;
77
+ var todayFlg=false
78
78
 
79
79
  for(i in 1..7) {//全曜日チェック
80
80
 
@@ -96,9 +96,11 @@
96
96
 
97
97
  txtest.text = "${youbiSa}日と今日ならす"//★鳴った後はyoubiSaをadd
98
98
 
99
+ todayFlg=true
100
+
99
101
  } else {//今の時間と設定時間が同じ場合
100
102
 
101
- if (minNow > setMinute) {//今5分が大きい 設定4分より
103
+ if (minNow > setMinute) {//今分が大きい 設定分より
102
104
 
103
105
  c.add(Calendar.DATE, youbiSa)
104
106
 
@@ -106,7 +108,9 @@
106
108
 
107
109
  } else {
108
110
 
109
- txtest.text ="${youbiSa}日と今日同時同分${yearNow}/${monthNow}/${dateNow}"//★鳴った後はyoubiSaをadd
111
+ txtest.text ="${youbiSa}日と今日同時同分"//★鳴った後はyoubiSaをadd
112
+
113
+ todayFlg=true
110
114
 
111
115
  }
112
116
 
@@ -146,7 +150,7 @@
146
150
 
147
151
  c.add(Calendar.DATE, youbiSa)
148
152
 
149
- if(youbiSa>=7){//指定日と前日選ぶと7までカウントしちゃうので
153
+ if(youbiSa>=7|||| todayFlg==false){//指定日と前日選ぶと7までカウントしちゃうので
150
154
 
151
155
  youbiSa=6//強制マイナス1日
152
156
 

5

指定日と前日選ぶと7までカウントしちゃうので強制マイナス1日

2019/10/03 07:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -126,8 +126,6 @@
126
126
 
127
127
  //同じ曜日が無い場合・再度チェック
128
128
 
129
- if(onajiYoubiNum==0) {
130
-
131
129
  for(i in 1..7) {
132
130
 
133
131
  if (kizonYobiAry[i] == 1) {
@@ -148,9 +146,13 @@
148
146
 
149
147
  c.add(Calendar.DATE, youbiSa)
150
148
 
149
+ if(youbiSa>=7){//指定日と前日選ぶと7までカウントしちゃうので
150
+
151
+ youbiSa=6//強制マイナス1日
152
+
153
+ }
154
+
151
- txtest.text = "来週の${youbiSa}日後にならす"
155
+ txtest.text = "来週の${youbiSa}日後にならす"
152
-
153
- }
154
156
 
155
157
  }
156
158
 

4

(kizonYobiAry[i] == 1)true探しの入れ忘れ

2019/10/03 07:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -130,6 +130,8 @@
130
130
 
131
131
  for(i in 1..7) {
132
132
 
133
+ if (kizonYobiAry[i] == 1) {
134
+
133
135
    youbiSa = i - youbiNow//指定曜日から今日曜日を引く
134
136
 
135
137
  if (youbiSa > 0) {//曜日差が0を超える だと今週
@@ -156,6 +158,8 @@
156
158
 
157
159
  }
158
160
 
161
+ }
162
+
159
163
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
160
164
 
161
165
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓

3

youbiSa = (7 -youbiNow)+i 来週の値の式ミス訂正

2019/10/03 07:05

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -142,7 +142,7 @@
142
142
 
143
143
  } else {//曜日差がマイナスだと来週
144
144
 
145
- youbiSa = 7 - (youbiSa * -1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
145
+ youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
146
146
 
147
147
  c.add(Calendar.DATE, youbiSa)
148
148
 

2

2回目のfor構文のyoubiSa = i - youbiNow入れ忘れ

2019/10/03 06:58

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -126,9 +126,11 @@
126
126
 
127
127
  //同じ曜日が無い場合・再度チェック
128
128
 
129
+ if(onajiYoubiNum==0) {
130
+
129
131
  for(i in 1..7) {
130
132
 
131
- if(onajiYoubiNum==0) {
133
+   youbiSa = i - youbiNow//指定曜日から今日曜日を引く
132
134
 
133
135
  if (youbiSa > 0) {//曜日差が0を超える だと今週
134
136
 

1

forは2回別々にやらないと取得モレがあったため

2019/10/03 06:45

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  androidstudioとKotlinでアラームアプリを作っています。
2
2
 
3
- ユーザー側で毎週の曜日指定(複数選択)をするつもりでした。動くようになったのですが、if構文だらけになってしまいました。
3
+ ユーザー側で毎週の曜日指定(複数選択)をするつもりでした。動くようになったのですが、if構文だらけで、forも2回使うようなかなり込み入った形になってしまいました。
4
4
 
5
5
  これを音が鳴るページにもコピペする形です。しかも音のなるresultActivityでは★の注釈文の通りに多少改変します。
6
6
 
@@ -72,67 +72,85 @@
72
72
 
73
73
  //-曜日指定がある場合------------------------------
74
74
 
75
+ //まず同じ曜日を引き出す
76
+
77
+ var onajiYoubiNum=0;
78
+
75
79
  for(i in 1..7) {//全曜日チェック
76
80
 
77
- if (kizonYobiAry[i] == 1) {//指定曜日発見!
81
+ if (kizonYobiAry[i] == 1) {//指定曜日発見!
78
-
82
+
79
- youbiSa=i-youbiNow//指定曜日から今日曜日を引く
83
+ youbiSa = i - youbiNow//指定曜日から今日曜日を引く
80
-
84
+
81
- if(youbiSa==0){//指定曜日が今日曜日の場合
85
+ if (youbiSa == 0) {//指定曜日が今日曜日の場合
82
-
86
+
83
- youbiSa=7//来週ならすため、曜日差7日加える
87
+ youbiSa = 7//来週ならすため、曜日差7日加える
84
-
88
+
85
- if (hourNow > setHour||hourNow>=23) {//今時間が大きい 設定時間より(それと夜23時)
89
+ if (hourNow > setHour || hourNow >= 23) {//今時間が大きい 設定時間より(それと夜23時)
86
-
90
+
87
- c.add(Calendar.DATE, youbiSa)//7日を加算
91
+ c.add(Calendar.DATE, youbiSa)//7日を加算
88
-
92
+
89
- txtest.text = "7日後ならす"
93
+ txtest.text = "${youbiSa}日後ならす"
90
-
94
+
91
- } else if (hourNow < setHour) {//今時間が小さい 設定時より
95
+ } else if (hourNow < setHour) {//今時間が小さい 設定時より
92
-
96
+
93
- txtest.text = "今日ならす+7日後も"//★鳴った後はyoubiSaをadd
97
+ txtest.text = "${youbiSa}日と今日ならす"//★鳴った後はyoubiSaをadd
94
-
98
+
95
- } else {//今の時間と設定時間が同じ場合
99
+ } else {//今の時間と設定時間が同じ場合
96
-
100
+
97
- if (minNow > setMinute) {//今5分が大きい 設定4分より
101
+ if (minNow > setMinute) {//今5分が大きい 設定4分より
98
-
102
+
99
- c.add(Calendar.DATE, youbiSa)
103
+ c.add(Calendar.DATE, youbiSa)
100
-
104
+
101
- txtest.text = "7日後ならす。同時刻・分少なくて"//★鳴った後はyoubiSaをadd
105
+ txtest.text = "7日後ならす。同時刻・分少なくて"//★鳴った後はyoubiSaをadd
102
-
106
+
103
- }else{
107
+ } else {
104
-
108
+
105
- txtest.text="今日ならす。同時刻・分多くて+7日後も(同分も)"//★鳴った後はyoubiSaをadd
109
+ txtest.text ="${youbiSa}日と今日同時同分${yearNow}/${monthNow}/${dateNow}"//★鳴った後はyoubiSaをadd
106
-
110
+
107
- }
111
+ }
108
-
109
- }
110
-
111
- break//今日鳴らすのがわかったためfor停止
112
-
113
-
114
-
115
- }else if(youbiSa>0){//曜日差が0を超える だと今週
116
-
117
- c.add(Calendar.DATE, youbiSa)
118
-
119
- txtest.text = "今週の${youbiSa}日後にならす"
120
-
121
- break//今週の一番近い日以外は調べなくていいのでfor停止
122
-
123
- }else{//曜日差がマイナスだと来週
124
-
125
- youbiSa=7-(youbiSa*-1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
126
-
127
- c.add(Calendar.DATE, youbiSa)
128
-
129
- txtest.text = "来週の${youbiSa}日後にならす"
130
-
131
- }
132
112
 
133
113
  }
134
114
 
115
+ onajiYoubiNum = i
116
+
117
+ break//発見した時点でforをやめてOK
118
+
135
- }
119
+ }
120
+
121
+ }
122
+
123
+ }
124
+
125
+ //------------------------------
126
+
127
+ //同じ曜日が無い場合・再度チェック
128
+
129
+ for(i in 1..7) {
130
+
131
+ if(onajiYoubiNum==0) {
132
+
133
+ if (youbiSa > 0) {//曜日差が0を超える だと今週
134
+
135
+ c.add(Calendar.DATE, youbiSa)
136
+
137
+ txtest.text = "今週の${youbiSa}日後にならす"
138
+
139
+ break//今週中に曜日を見つけたらforをやめてOK
140
+
141
+ } else {//曜日差がマイナスだと来週
142
+
143
+ youbiSa = 7 - (youbiSa * -1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
144
+
145
+ c.add(Calendar.DATE, youbiSa)
146
+
147
+ txtest.text = "来週の${youbiSa}日後にならす"
148
+
149
+ }
150
+
151
+ }
152
+
153
+ }
136
154
 
137
155
  }
138
156