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

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

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

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

2回答

3657閲覧

Javaの複数の入力欄の重複チェック

Lorraine

総合スコア10

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

0クリップ

投稿2020/06/27 13:10

編集2020/06/28 13:02

前提・実現したいこと

経緯:
趣味でPCサイトを作成しております、幾つかチェックを追加したいのですが、もっと効率の良い実装ができると思い、実装が得意な方々様に本当にお手数ではございますが、御助力をお願いしたいです。

実現したいこと:
複数の入力欄があるページ(1画面)にて、1行目の取得した値と2行目以降の取得した値をチェックし、特定の値でかつ重複して使用されている場合は警告メッセージを画面上に表示する。
※削除処理はなしで良い、あくまで警告のみ

前提条件:
・1行目問わず重複チェックできればありがたい。
・特定の値は数値でも文字列でもどちらでも良い、一旦以下は、文字列にしております。 値は”505”
・新たにfor文等を使用しても良いです。

備考:
・keishiseiには、"505"が入っております。
・DataBankCode.Gaisya505には、定数の”505”が入っております。
・エラーではありません。
・1行目に505が入っている場合でそれ以降の行に値がない場合はチェックしないものとします。
・チェックの呼び出し処理に関しては、実装済み
・画面内でのボタン押下時に、チェック処理が動作するようにしております。
・警告メッセージはgamen.errorにて画面上に表示されるようにしております。
・当該実装でも実現自体はしており、チェック処理そのものは正常に動作する。

できれば、参考等にもしたい為、実装イメージ(ソース)も記載していただければ幸いです。
チェック手法は簡略化効率的にできればどの書き方でも大丈夫です。

発生している問題

チェックが煩雑な為、効率化したい。

該当のソースコードのみ

Java

1public int KeisichoHonbuCheck() 2{ 3String keishisei; 4 5 6for( i = 0;i<500; i++) 7{ 8途中省略 9101112// 本題の改善したい箇所 13if(! == 1 && keishisei == 505 && gamen.getValue(i-1,"keishisei").equals(DataBankCode.Gaisya505)){ 14gamen.error(userkanri.getMessage("101111100011E")); 15 16} 17forを抜ける処理がだらだらと続く.... 18 19 20

試したこと

以下を扱ったものでも大丈夫です。
Stream 
contains

補足情報(FW/ツールのバージョンなど)

環境:Eclipse(4.16)
使用言語:JavaSE14

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

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

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

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

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

m.ts10806

2020/06/27 13:15

>品雑 おそらく使いたい語句は「はんざつ」と読みます。
Lorraine

2020/06/27 13:16

そうですね、修正しておきます。
m.ts10806

2020/06/27 13:16

ただ、コード全体が見えません。KeisichoHonbuCheckがどう呼び出されるのかとか。 入力コントロールからの送信であれば、入力コントロール部分の設定も必要かと思います。
m.ts10806

2020/06/27 13:18

効率的なコーディングでよく採用されるのは「法則性」「ルール」です。 なければ作ること。それにより実装がやりやすくなります。 しかしながら提示内容だけではアプリケーションの全体像も見えませんし、当然法則性も見えません。 なのに「コードを出せ」とある、ちょっと乱暴な質問内容になっています。
Lorraine

2020/06/27 13:27 編集

記載内容が不明瞭ですいません。 チェック処理そのもの、呼び出し(画面内でのボタン押下時の処理として実装してあります)の記述は完了しており、チェック動作します。入力コントロールの設定は実装済みな為、画面内の項目も記載の通り、gamen.getからピンポイントでその値を取得することは可能です。その為、本件質問事項該当の箇所(if文箇所)のみが御助力していただきたい箇所になります。
退会済みユーザー

退会済みユーザー

2020/06/27 13:28

環境:Eclipse(最新) とか思ってる人って大抵最新じゃないんだよな
Lorraine

2020/06/27 13:54

失礼、バージョン等更新にて大きく使用できることが変わっておりましたら、御回答しにくいですよね。 御足労おかけしました。修正いたしました。
YT0014

2020/06/27 13:54

「! == 1」 は「 i != 1」、forは、for (i = 1; i <= 500; i++)ではないですか?
退会済みユーザー

退会済みユーザー

2020/06/27 13:59

後さらに言えば 「使用言語:Java8以降」 ↑例えば java 12 でプレビューされたが13で削除された項目を含んでいても文句はいえないから
YT0014

2020/06/27 14:07

「keishisei == 505」も、「keishisei.equals("505")」では? 加えて、keishisei に入っている値が何なのか、このコードからは不明。 さらに、gamen.getValue(i-1,"keishisei")も、説明が必要。 加えて、DataBankCode.Gaisya505 の説明も必須。
Lorraine

2020/06/27 14:08

その点に関しましては、御回答者様のバージョンで構いません。こちらから文句等が発生することはございません。 ラムダ式で記載しても、ローカル変数型推論で記載しても、互換性が保たれていればどのバージョンで記載しても構いません。その為、こちらからどのバージョン出なければ”駄目です!”と言うことはございません。
YT0014

2020/06/27 14:09

特定の値が1つなら、2つ以上あるかないかをチェックして、2つ以上ある時は、その値が入っていればエラー、で良いのでは?
m.ts10806

2020/06/27 14:09

結局は質問者環境で解決しなければならないので、回答者環境に任せるのではなく、「自身の環境」を提示すべきですし、ガイドラインにもそのように記載があるかと思います。
guest

回答2

0

入力値をjava.util.Setオブジェクトにaddしていき、addする前にcontainsで存在チェックしていけば重複は検知できるのではと思います。addの戻り値でも重複がわかるのでそれを利用しても良いです。

投稿2020/06/27 14:29

hope_mucci

総合スコア4447

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

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

0

自己解決

間違った日本語すいませんでした。扱い慣れていないもので、一旦カウントして、個数判定で実装しました。

投稿2020/07/04 10:51

Lorraine

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問