teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

10

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

2019/10/03 08:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -70,15 +70,17 @@
70
70
  if (kizonYobiAry[i] == 1) {//指定曜日発見
71
71
  youbiSa = i - youbiNow//指定曜日から今日曜日を引く
72
72
  c.add(Calendar.DATE, youbiSa)
73
- txtest.text = "今週の${youbiSa}日後にならす"
73
+ txtest.text = "今週の${youbiSa}日後にならす"
74
- break//見つけたらforをやめてOK
74
+ break//見つけたらforをやめてOK
75
- }else{
75
+ }
76
+ if(i==7){//見つからない場合は来週探す
76
77
  raisyuFlg=true
77
78
  }
79
+
78
80
  }
79
81
  //
80
82
  if(raisyuFlg){
81
- for(i in 1..youbiNow-1) {//来週の予定を検索
83
+ for(i in 1..(youbiNow-1)) {//来週の予定を検索
82
84
  if (kizonYobiAry[i] == 1) {//指定曜日発見
83
85
  youbiSa = (7 - youbiNow) + i//(カレンダー的数え方。i=指定日・(土曜-今日曜日)+指定日
84
86
  c.add(Calendar.DATE, youbiSa)

9

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

2019/10/03 08:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -63,27 +63,33 @@
63
63
  }
64
64
  }
65
65
  //------------------------------
66
- //同じ曜日が無い場合・再度チェック
66
+ //今週と来週で2つforにて検索(todayflgで囲ってるのはfor構文負担の軽減のため)
67
+ var raisyuFlg=false
67
- if(todayFlg==false){
68
+ if(todayFlg==false){//今日以外で
68
- for(i in 1..7) {
69
+ for(i in (youbiNow+1)..7) {//今週=今日から土曜までを探す
69
- if (kizonYobiAry[i] == 1) {
70
+ if (kizonYobiAry[i] == 1) {//指定曜日発見
70
-   youbiSa = i - youbiNow//指定曜日から今日曜日を引く
71
+ youbiSa = i - youbiNow//指定曜日から今日曜日を引く
71
- if (youbiSa > 0) {//曜日差が0を超える だと今週
72
- youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
73
- c.add(Calendar.DATE, youbiSa)
72
+ c.add(Calendar.DATE, youbiSa)
74
- if(youbiSa>=7 && todayFlg==false){//7日後+当日は除外
73
+ txtest.text = "今週の${youbiSa}日後にならす"
75
- youbiSa=6//強制マイナス1日
74
+ break//見つけたらforをやめてOK
76
- } else {
75
+ }else{
76
+ raisyuFlg=true
77
+ }
78
+ }
79
+ //
80
+ if(raisyuFlg){
81
+ for(i in 1..youbiNow-1) {//来週の予定を検索
82
+ if (kizonYobiAry[i] == 1) {//指定曜日発見
83
+ youbiSa = (7 - youbiNow) + i//(カレンダー的数え方。i=指定日・(土曜-今日曜日)+指定日
77
- c.add(Calendar.DATE, youbiSa)
84
+ c.add(Calendar.DATE, youbiSa)
78
- txtest.text = "週の${youbiSa}日後にならす"
85
+ txtest.text = "週の${youbiSa}日後にならす"
79
- break//今週中に曜日を見つけたらforをやめてOK
86
+ break//見つけたらforをやめてOK
80
- }
87
+ }
81
- txtest.text = "来週の${youbiSa}日後にならす"
82
- }
88
+ }
83
- }
89
+ }
84
- }
90
+ }
85
- }
91
+ }
86
- }
92
+
87
93
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
88
94
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓
89
95
  dateText.text = android.text.format.DateFormat.format("yyyy/MM/dd", c)

8

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

2019/10/03 08:12

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -64,24 +64,26 @@
64
64
  }
65
65
  //------------------------------
66
66
  //同じ曜日が無い場合・再度チェック
67
+ if(todayFlg==false){
67
68
  for(i in 1..7) {
68
69
  if (kizonYobiAry[i] == 1) {
69
70
    youbiSa = i - youbiNow//指定曜日から今日曜日を引く
70
71
  if (youbiSa > 0) {//曜日差が0を超える だと今週
72
+ youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
71
- c.add(Calendar.DATE, youbiSa)
73
+ c.add(Calendar.DATE, youbiSa)
72
- txtest.text = "今週の${youbiSa}日後にならす"
73
- break//今週中に曜日を見つけたらforをやめてOK
74
- } else {//曜日差がマイナスだと来週
75
- youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
76
- c.add(Calendar.DATE, youbiSa)
77
74
  if(youbiSa>=7 && todayFlg==false){//7日後+当日は除外
78
75
  youbiSa=6//強制マイナス1日
76
+ } else {
77
+ c.add(Calendar.DATE, youbiSa)
78
+ txtest.text = "今週の${youbiSa}日後にならす"
79
+ break//今週中に曜日を見つけたらforをやめてOK
79
80
  }
80
81
  txtest.text = "来週の${youbiSa}日後にならす"
81
82
  }
82
83
  }
83
84
  }
84
85
  }
86
+ }
85
87
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
86
88
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓
87
89
  dateText.text = android.text.format.DateFormat.format("yyyy/MM/dd", c)

7

7日後+当日は除外

2019/10/03 07:57

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -74,7 +74,7 @@
74
74
  } else {//曜日差がマイナスだと来週
75
75
  youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
76
76
  c.add(Calendar.DATE, youbiSa)
77
- if(youbiSa>=7|||| todayFlg==false){//指定と前選ぶと7までカウントしちゃうので
77
+ if(youbiSa>=7 && todayFlg==false){//7後+当は除外
78
78
  youbiSa=6//強制マイナス1日
79
79
  }
80
80
  txtest.text = "来週の${youbiSa}日後にならす"

6

todayFlg=をくわえた

2019/10/03 07:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -36,7 +36,7 @@
36
36
  }else {
37
37
  //-曜日指定がある場合------------------------------
38
38
  //まず同じ曜日を引き出す
39
- var onajiYoubiNum=0;
39
+ var todayFlg=false
40
40
  for(i in 1..7) {//全曜日チェック
41
41
  if (kizonYobiAry[i] == 1) {//指定曜日発見!
42
42
  youbiSa = i - youbiNow//指定曜日から今日曜日を引く
@@ -47,12 +47,14 @@
47
47
  txtest.text = "${youbiSa}日後ならす"
48
48
  } else if (hourNow < setHour) {//今時間が小さい 設定時より
49
49
  txtest.text = "${youbiSa}日と今日ならす"//★鳴った後はyoubiSaをadd
50
+ todayFlg=true
50
51
  } else {//今の時間と設定時間が同じ場合
51
- if (minNow > setMinute) {//今5分が大きい 設定4分より
52
+ if (minNow > setMinute) {//今分が大きい 設定分より
52
53
  c.add(Calendar.DATE, youbiSa)
53
54
  txtest.text = "7日後ならす。同時刻・分少なくて"//★鳴った後はyoubiSaをadd
54
55
  } else {
55
- txtest.text ="${youbiSa}日と今日同時同分${yearNow}/${monthNow}/${dateNow}"//★鳴った後はyoubiSaをadd
56
+ txtest.text ="${youbiSa}日と今日同時同分"//★鳴った後はyoubiSaをadd
57
+ todayFlg=true
56
58
  }
57
59
  }
58
60
  onajiYoubiNum = i
@@ -72,7 +74,7 @@
72
74
  } else {//曜日差がマイナスだと来週
73
75
  youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
74
76
  c.add(Calendar.DATE, youbiSa)
75
- if(youbiSa>=7){//指定日と前日選ぶと7までカウントしちゃうので
77
+ if(youbiSa>=7|||| todayFlg==false){//指定日と前日選ぶと7までカウントしちゃうので
76
78
  youbiSa=6//強制マイナス1日
77
79
  }
78
80
  txtest.text = "来週の${youbiSa}日後にならす"

5

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

2019/10/03 07:26

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -62,7 +62,6 @@
62
62
  }
63
63
  //------------------------------
64
64
  //同じ曜日が無い場合・再度チェック
65
- if(onajiYoubiNum==0) {
66
65
  for(i in 1..7) {
67
66
  if (kizonYobiAry[i] == 1) {
68
67
    youbiSa = i - youbiNow//指定曜日から今日曜日を引く
@@ -73,8 +72,10 @@
73
72
  } else {//曜日差がマイナスだと来週
74
73
  youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
75
74
  c.add(Calendar.DATE, youbiSa)
76
- txtest.text = "来週の${youbiSa}後にならす"
75
+ if(youbiSa>=7){//指定と前日選ぶと7までカウントしちゃうので
76
+ youbiSa=6//強制マイナス1日
77
77
  }
78
+ txtest.text = "来週の${youbiSa}日後にならす"
78
79
  }
79
80
  }
80
81
  }

4

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

2019/10/03 07:19

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -64,6 +64,7 @@
64
64
  //同じ曜日が無い場合・再度チェック
65
65
  if(onajiYoubiNum==0) {
66
66
  for(i in 1..7) {
67
+ if (kizonYobiAry[i] == 1) {
67
68
    youbiSa = i - youbiNow//指定曜日から今日曜日を引く
68
69
  if (youbiSa > 0) {//曜日差が0を超える だと今週
69
70
  c.add(Calendar.DATE, youbiSa)
@@ -77,6 +78,7 @@
77
78
  }
78
79
  }
79
80
  }
81
+ }
80
82
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
81
83
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓
82
84
  dateText.text = android.text.format.DateFormat.format("yyyy/MM/dd", c)

3

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

2019/10/03 07:05

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -70,7 +70,7 @@
70
70
  txtest.text = "今週の${youbiSa}日後にならす"
71
71
  break//今週中に曜日を見つけたらforをやめてOK
72
72
  } else {//曜日差がマイナスだと来週
73
- youbiSa = 7 - (youbiSa * -1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
73
+ youbiSa = (7 -youbiNow)+i//(カレンダー的見方。(土曜-今日曜)+指定日)
74
74
  c.add(Calendar.DATE, youbiSa)
75
75
  txtest.text = "来週の${youbiSa}日後にならす"
76
76
  }

2

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

2019/10/03 06:58

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -62,8 +62,9 @@
62
62
  }
63
63
  //------------------------------
64
64
  //同じ曜日が無い場合・再度チェック
65
+ if(onajiYoubiNum==0) {
65
66
  for(i in 1..7) {
66
- if(onajiYoubiNum==0) {
67
+   youbiSa = i - youbiNow//指定曜日から今日曜日を引く
67
68
  if (youbiSa > 0) {//曜日差が0を超える だと今週
68
69
  c.add(Calendar.DATE, youbiSa)
69
70
  txtest.text = "今週の${youbiSa}日後にならす"

1

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

2019/10/03 06:45

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  androidstudioとKotlinでアラームアプリを作っています。
2
- ユーザー側で毎週の曜日指定(複数選択)をするつもりでした。動くようになったのですが、if構文だらけになってしまいました。
2
+ ユーザー側で毎週の曜日指定(複数選択)をするつもりでした。動くようになったのですが、if構文だらけで、forも2回使うようなかなり込み入った形になってしまいました。
3
3
  これを音が鳴るページにもコピペする形です。しかも音のなるresultActivityでは★の注釈文の通りに多少改変します。
4
4
  なんかkotlin的なスッキリしたコードが他にあったりしますでしょうか?
5
5
  ```ここに言語を入力
@@ -35,38 +35,47 @@
35
35
  }
36
36
  }else {
37
37
  //-曜日指定がある場合------------------------------
38
+ //まず同じ曜日を引き出す
39
+ var onajiYoubiNum=0;
38
40
  for(i in 1..7) {//全曜日チェック
39
- if (kizonYobiAry[i] == 1) {//指定曜日発見!
41
+ if (kizonYobiAry[i] == 1) {//指定曜日発見!
40
- youbiSa=i-youbiNow//指定曜日から今日曜日を引く
42
+ youbiSa = i - youbiNow//指定曜日から今日曜日を引く
41
- if(youbiSa==0){//指定曜日が今日曜日の場合
43
+ if (youbiSa == 0) {//指定曜日が今日曜日の場合
42
- youbiSa=7//来週ならすため、曜日差7日加える
44
+ youbiSa = 7//来週ならすため、曜日差7日加える
43
- if (hourNow > setHour||hourNow>=23) {//今時間が大きい 設定時間より(それと夜23時)
45
+ if (hourNow > setHour || hourNow >= 23) {//今時間が大きい 設定時間より(それと夜23時)
44
- c.add(Calendar.DATE, youbiSa)//7日を加算
46
+ c.add(Calendar.DATE, youbiSa)//7日を加算
45
- txtest.text = "7日後ならす"
47
+ txtest.text = "${youbiSa}日後ならす"
46
- } else if (hourNow < setHour) {//今時間が小さい 設定時より
48
+ } else if (hourNow < setHour) {//今時間が小さい 設定時より
47
- txtest.text = "今日ならす+7日後も"//★鳴った後はyoubiSaをadd
49
+ txtest.text = "${youbiSa}日と今日ならす"//★鳴った後はyoubiSaをadd
48
- } else {//今の時間と設定時間が同じ場合
50
+ } else {//今の時間と設定時間が同じ場合
49
- if (minNow > setMinute) {//今5分が大きい 設定4分より
51
+ if (minNow > setMinute) {//今5分が大きい 設定4分より
50
- c.add(Calendar.DATE, youbiSa)
52
+ c.add(Calendar.DATE, youbiSa)
51
- txtest.text = "7日後ならす。同時刻・分少なくて"//★鳴った後はyoubiSaをadd
53
+ txtest.text = "7日後ならす。同時刻・分少なくて"//★鳴った後はyoubiSaをadd
52
- }else{
54
+ } else {
53
- txtest.text="今日ならす。同時刻・分多くて+7日後も(同分も)"//★鳴った後はyoubiSaをadd
55
+ txtest.text ="${youbiSa}日と今日同時同分${yearNow}/${monthNow}/${dateNow}"//★鳴った後はyoubiSaをadd
54
- }
56
+ }
55
- }
56
- break//今日鳴らすのがわかったためfor停止
57
-
58
- }else if(youbiSa>0){//曜日差が0を超える だと今週
59
- c.add(Calendar.DATE, youbiSa)
60
- txtest.text = "今週の${youbiSa}日後にならす"
61
- break//今週の一番近い日以外は調べなくていいのでfor停止
62
- }else{//曜日差がマイナスだと来週
63
- youbiSa=7-(youbiSa*-1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
64
- c.add(Calendar.DATE, youbiSa)
65
- txtest.text = "来週の${youbiSa}日後にならす"
66
- }
67
57
  }
68
- }
58
+ onajiYoubiNum = i
59
+ break//発見した時点でforをやめてOK
69
60
  }
61
+ }
62
+ }
63
+ //------------------------------
64
+ //同じ曜日が無い場合・再度チェック
65
+ for(i in 1..7) {
66
+ if(onajiYoubiNum==0) {
67
+ if (youbiSa > 0) {//曜日差が0を超える だと今週
68
+ c.add(Calendar.DATE, youbiSa)
69
+ txtest.text = "今週の${youbiSa}日後にならす"
70
+ break//今週中に曜日を見つけたらforをやめてOK
71
+ } else {//曜日差がマイナスだと来週
72
+ youbiSa = 7 - (youbiSa * -1)//(木→水として最大値6だから7-(-1*-1)にすると6が出てくる)
73
+ c.add(Calendar.DATE, youbiSa)
74
+ txtest.text = "来週の${youbiSa}日後にならす"
75
+ }
76
+ }
77
+ }
78
+ }
70
79
  //--↑↑↑↑resultにもコピペ★対応↑↑↑↑--------------------------------------
71
80
  //↓は[はじめてのAndroidプログラミング 第4版|金田 浩明]のソース↓
72
81
  dateText.text = android.text.format.DateFormat.format("yyyy/MM/dd", c)