質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

5回答

7426閲覧

特定の数値のときだけ”?”をつける

Tutti

総合スコア83

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2016/07/15 02:14

for文で50までループして5の数字がつくときだけ"?"をつけたいのですが、String型などにせず、計算式での書き方が分からす悩んでいます。
教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tutti

2016/07/19 00:48

除算してそのまま代入も出来るんですね!この式の書き方も今後の参考にさせていただきます!!!! いつも答えていただき、ありがとうございます!!!!!!!!!!
guest

0

この程度の数だったらこれでもできます。

if (i == 5) {}
if (i == 15) {}
if (i == 25) {}
.
.
if (i == 50) {}

それで一応動くものを作り、もう少し考えたら法則が見つかると思います。

投稿2016/07/15 02:18

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tutti

2016/07/15 02:20

考えてみます!ありがとうございます!
guest

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
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tutti

2016/07/19 00:42

説明不足で申し訳ございません。答えていただいたとおりです。?を付加したかったのです。いつも答えていただき、ありがとうございます。
guest

0

ベストアンサー

2桁の数で一の位が5か十の位が5であればいいので、
「10で割った商」か「10で割った余り」が5であればいいのです。

投稿2016/07/15 02:25

swordone

総合スコア20651

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tutti

2016/07/15 04:10

申し訳ございません。なぜそうなるのか分かりません。
intelf___

2016/07/15 04:37

int型の計算は切り捨てをします。 ・10で割った商 50/10=5 51/10=5 (51/10=5.1→切り捨て→5) ・10で割った余り 5%10=5 15%10=5 (15/10=1...5→5)
Tutti

2016/07/19 00:44

なるほど!!!!!そこまで思考が回りませんでした。くやしい。。。 答えていただき、ありがとうございます!!!!
intelf___

2016/07/19 06:29

高速な処理を目的としないなら、文字列にすることで非常に簡単に実装できますよ int i = 数字; String s = "" + i; if(-1 != s.indexOf("5")) s += '?'; System.out.println(s); これだけです。数字の桁数に依存しないので汎用性も高いです。
swordone

2016/07/19 06:33

「String型などにせず」と制限されてしまったので…
guest

0

2桁までしか対応できてませんが、こんな感じでしょうか。

Java

1for( int i = 1; i <= 50; i++ ){ 2 if( i % 10 == 5 || i / 10 == 5 ){ 34

投稿2016/07/15 02:22

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tutti

2016/07/15 04:09

もし、5ではなくて、3の場合はif( i % 6 == 3 || i / 6 == 3 ){ という風になると考えてよろしいでしょうか?
ttyp03

2016/07/15 04:11

いえ、考え方は一緒で、 if( i % 10 == 3 || i / 10 == 3 ){ ではないでしょうか。
Tutti

2016/07/15 04:15

なぜ、10という数字を使うのか教えていただけますか? すみません。
ttyp03

2016/07/15 04:19

% は余りを求めますね。/ は除算です。 例えば13の場合 13%10は3です。 10で割った余りを求めることで、数字の一桁目を取得できます。 13/10の場合の計算結果は1です。 つまり数字の二桁目を取得できます。 但しこちらは最初にお答えした通り、二桁限定です。 123とかだと、123/10で12になってしまうので使えません。
Tutti

2016/07/15 04:43

あ!なるほど!!!理解できました!そういうことなんですね! 分かりました!丁寧に教えてくださりありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問