for文で50までループして5の数字がつくときだけ"?"をつけたいのですが、String型などにせず、計算式での書き方が分からす悩んでいます。
教えていただけないでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答5件
0
1の桁が5であるか、そうでないなら10で割って(切り捨て)、また1の桁が5であるか、を繰り返せばわかります。
例えば1501234という数値があったとして、チェックの流れは以下のようになります。
1501234 ↑5ではない 10で割って切り捨て 150123 ↑5ではない 10で割って切り捨て 15012 ↑5ではない 10で割って切り捨て 1501 ↑5ではない 10で割って切り捨て 150 ↑5ではない 10で割って切り捨て 15 ↑5!
コードにするならこうです。
Java
1int x = 1501234; 2while(x > 0) { 3 if(x % 10 == 5) { 4 // 5が付く数値である 5 break; 6 } 7 x /= 10; 8}
投稿2016/07/15 02:23
総合スコア9206
0
? を付けるといういみが不明でしたが、一応書いてみました。
java
1class TeraX { 2 public static void main(String[] args) { 3 for (int i = 1; i <= 50; i++) { 4 String mark = ""; 5 if (has_5(i)) { 6 mark = "?"; 7 } 8 System.out.print(mark + i + " "); 9 } 10 System.out.println(); 11 } 12 13 private static boolean has_5(int num) { 14 while (num > 0) { 15 if (num % 10 == 5) { 16 return true; 17 } 18 num /= 10; 19 } 20 return false; 21 } 22}
実行結果
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
5 が含まれていた場合に数字の前に ?を付加して表示しています。
投稿2016/07/15 14:03
編集2016/07/15 22:14総合スコア22324
0
ベストアンサー
2桁の数で一の位が5か十の位が5であればいいので、
「10で割った商」か「10で割った余り」が5であればいいのです。
投稿2016/07/15 02:25
総合スコア20651
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/15 04:10
2016/07/15 04:37
2016/07/19 00:44
2016/07/19 06:29
2016/07/19 06:33
0
2桁までしか対応できてませんが、こんな感じでしょうか。
Java
1for( int i = 1; i <= 50; i++ ){ 2 if( i % 10 == 5 || i / 10 == 5 ){ 3~ 4
投稿2016/07/15 02:22
総合スコア16998
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/15 04:09
2016/07/15 04:11
2016/07/15 04:15
2016/07/15 04:19
2016/07/15 04:43
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/07/19 00:48