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

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

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

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

Q&A

解決済

2回答

812閲覧

javaにて、入力された3つの数字のエラーチェック

Miyu_D2

総合スコア13

Java

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

0グッド

0クリップ

投稿2019/01/25 05:48

編集2019/01/25 06:06

java歴、数日です。お願いします。

ユーザが入力した異なる0~9までの3つの数字のエラーチェック判定を行いたいです。  
□  □  □
[1] [2] [3]

例えば、[1]に8、[2]に4、[3]に8  を入れた場合、同じ数字が入力されているので、

エラー◆半角数字を入力して下さい。◆
エラー◆同じ数字が入力されています。◆

など。

のエラーをprint.outさせたいです。

if文とfor文を使い、算出させるのだろうと、少しイメージはできましたが、
教本やネットで調べましたが、わかりません。考え方を教えてください。

if文だけだと今は3つの数字なのでよいかもしれませんが、入力数が多くなった時にfor文が必要だと思いました。

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

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

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

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

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

m.ts10806

2019/01/25 05:50

できているところまでで結構ですのでコードをご提示ください。 丸々コードを欲しいというのは作業依頼と同じですので質問ではありません
azuapricot

2019/01/25 05:52

最初からコードをもらおうという考えではいつまでたっても自分でできるようになりませんし、コピペ人間になってしまいます。 まずはあなたがどこまでできたのか、マークダウン <code> を使って提示してください。 話はそれからです。
azuapricot

2019/01/25 05:53

配列・for文・if文・System.out.print()を組み合わせれば実装できるはずなのでまずは頑張ってみてください。
Miyu_D2

2019/01/25 06:08

すみません。 コードを教えてください、ではなく、考え方のアドバイスを質問させていただいたつもりでした。
m.ts10806

2019/01/25 06:09

質問本文を見る限りは何も考えられてないわけでもなさそうなので「まずは組んでみよう」という流れになるはずなのですが。
azuapricot

2019/01/25 06:20

もしどうしても思いつかなければ以下のように文字に起こして考えるといいかもしれませんね ・まずはユーザー入力を受け取らなきゃ ・よし、数字が受けとれたぞ~ ・さて。中身をチェックするにはどうしたらいいだろう? ・半角数字とか重複チェックってどうやったらうまくいくだろう? ・エラーがあったときの処理はどうしよう? ・何も問題がなかったときの出力処理どうしよう? 恐らく鬼門はエラーチェックのところでしょう。
Miyu_D2

2019/01/25 06:37

ご回答、ありがとうございます。またゆっくり読み、必ずご回答の返信を書かせていただきます。 ただいま、急用が入ってしまい、現在、取り組めなくなってしましました
Miyu_D2

2019/01/25 06:38

リアクションはしようと思い、今は簡単に反応させていだきました。すみません
Miyu_D2

2019/01/28 08:24

for(i=0; i<=2;i++) { for(j=i+1; j<=2; j++) { if(box[i]==box[j]){ System.out.println("エラー 同じ数字が入力されています。");
Miyu_D2

2019/01/28 08:25

ご返信遅くなり、すみませんでした。 参考サイトを読み、このようなfor文を考えてみました。
azuapricot

2019/01/28 08:38 編集

int box[] = {1,2,3}; for(int i=0; i<=2;i++) { //i = 0だとエラーになるので、 int i = 0として iの宣言をする。 for(int j=i+1; j<=2; j++) { //j = i+1だとエラーになるので、int j=i+1として jの宣言をする。 if(box[i]==box[j]){ System.out.println("エラー 同じ数字が入力されています。"); } } } for(int i=0; i<=2;i++) { ←また、この i <= 2 のところを、2ではなく、配列(box)の長さ(length)を使って比較できると汎用性が聞いていいですね
azuapricot

2019/01/28 08:32

コード確認しましたが、重複チェックは出来ていると思います。
guest

回答2

0

例えばこんなイメージ
前提:各入力値を配列に格納するようにする
全角半角のチェック:入力する都度入力値に対して判定を行う
重複チェック:配列の大きさが2以上になった時に重複チェックを行う

投稿2019/01/25 05:54

madoka9393

総合スコア992

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

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

0

ベストアンサー

考え方が知りたいとのことなので、コードではなく何を使うのかなど書きますね

・ユーザーの文字入力を受け取る
→Scanner を使ってコンソール入力してもらう
https://uxmilk.jp/48686

・文字を使えるようにするために「配列」か「リスト」に入れなおす
→この入れなおすのも一筋縄ではいかないはずです。 for文を使ったりする必要があります。

・「配列」か「リスト」が出来上がったら、さっそく中身のチェックを行う
→for文を使って、『配列の長さ』の分だけ処理を繰り返します。(これで入力された数字が3つ以上に増えても問題なくなります)
「index(何番目か)」を使って配列の中身を取り出します

・半角英数チェックを行う
→正規表現を使ってパターンと合うか調べます
https://www.javalife.jp/2017/12/16/post-76/

・重複チェックを行う
→私ならHashSet の .containsメソッドを使いますが、そんなのわからないというのであれば
for文をまた回して同じ値が出てきたらエラーを出す。という処理にするのがいいのかもしれません
http://write-remember.com/program/java/overlapcheck/

・エラー出力をする
→try-catch文というものを使って「例外処理」できれば一番よいのですが、
難しければboolean型でチェック結果を保持しておいて最終判定に使用するなどもできるかもしれませんね

・最終出力があれば出力をする。

投稿2019/01/25 06:44

azuapricot

総合スコア2341

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問