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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

解決済

1回答

1663閲覧

Javaでfor文のコードのみ処理がされません

Sfidante

総合スコア90

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Java

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

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

0クリップ

投稿2015/06/25 05:01

###Javaのfor文の処理が反映されません
まずは、下記に該当するクラスを載せます

lang

1package search; 2 3import java.io.IOException; 4import java.util.HashMap; 5import java.util.LinkedList; 6import java.util.Map; 7 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13import javax.servlet.http.HttpSession; 14 15import profile.Ngram; 16import beans.ClientBeans; 17import beans.EngineerBeans; 18import dao.SearchClientDao; 19 20@WebServlet(name = "SearchClientList" , urlPatterns = { "/SearchClientList" }) 21public class SearchClientList extends HttpServlet{ 22 private static final long serialVersionUID = 1L; 23 Map<Integer , Integer> industryMap = new HashMap<>(); 24 Map<Integer , Integer> typeOfIndustryMap = new HashMap<>(); 25 26 @Override 27 protected void doGet(HttpServletRequest request, HttpServletResponse response) 28 throws ServletException, IOException { 29 request.setCharacterEncoding("utf8"); 30 HttpSession ses = request.getSession(true); 31 int engineerid = (int)ses.getAttribute("engineerid"); 32 SearchClientDao searchClientDao = new SearchClientDao(); 33 EngineerBeans bengineerBeans; 34 LinkedList<ClientBeans> clientList = new LinkedList<>(); 35 try{ 36 searchClientDao.connect(); 37 searchClientDao.selectSearchClient(engineerid); 38 String place = searchClientDao.selectSearchClient(engineerid).getDemand_place(); 39 Map<String, Integer> map = Ngram.createNgram(place, 2); 40 int price = searchClientDao.selectSearchClient(engineerid).getDemand_price(); 41 int price_min = 0; 42 int price_max = 0; 43 if(price == 1){ 44 price_min = 21; 45 price_max = 40; 46 }else if(price == 2){ 47 price_min = 41; 48 price_max = 60; 49 }else if(price == 3){ 50 price_min = 61; 51 price_max = 80; 52 }else if(price == 4){ 53 price_min = 81; 54 price_max = 100; 55 }else if(price == 5){ 56 price_min = 101; 57 price_max = 200; 58 } 59 searchClientDao.selectSearchIndustry(engineerid); 60 int industry1 = searchClientDao.selectSearchIndustry(engineerid).getIndustry1(); 61 industryMap.put(1, industry1); 62 int industry2 = searchClientDao.selectSearchIndustry(engineerid).getIndustry2(); 63 industryMap.put(2, industry2); 64 int industry3 = searchClientDao.selectSearchIndustry(engineerid).getIndustry3(); 65 industryMap.put(3, industry3); 66 67 searchClientDao.selectSearchTypeOfIndustry(engineerid); 68 int type_of_industry1 = searchClientDao.selectSearchTypeOfIndustry(engineerid).getType_of_industry1(); 69 typeOfIndustryMap.put(1, type_of_industry1); 70 int type_of_industry2 = searchClientDao.selectSearchTypeOfIndustry(engineerid).getType_of_industry2(); 71 typeOfIndustryMap.put(1, type_of_industry2); 72 int type_of_industry3 = searchClientDao.selectSearchTypeOfIndustry(engineerid).getType_of_industry3(); 73 typeOfIndustryMap.put(1, type_of_industry3); 74 75 for (Map.Entry<String, Integer> entry : map.entrySet()) { 76 String place_piece = entry.getKey(); 77 System.out.println(place_piece); 78 for(int i = 1; i < industryMap.size(); i++){ 79 for(int j = 1; j < typeOfIndustryMap.size(); j++){ 80 int industry_num = industryMap.get(i); 81 int type_of_industry_num = typeOfIndustryMap.get(j); 82 System.out.println(industry_num); 83 System.out.println(type_of_industry_num); 84 clientList.addAll(searchClientDao.searchClientList(place_piece , price_min , price_max , type_of_industry_num , industry_num)); 85 } 86 } 87 } 88 89 request.setAttribute("clientList", clientList); 90 searchClientDao.close(); 91 request.getRequestDispatcher("MatchingList_engineer.jsp").forward(request, response); 92 }catch(Exception e){ 93 e.printStackTrace(); 94 } 95 } 96 97 @Override 98 protected void doPost(HttpServletRequest request, HttpServletResponse response) 99 throws ServletException, IOException { 100 doGet(request, response); 101 } 102}

上記のクラスでデータベースのデータを取得して、
JSPでそのデータを表示させようとしています。

該当の処理がされない箇所が以下の部分です。

lang

1for (Map.Entry<String, Integer> entry : map.entrySet()) { 2 String place_piece = entry.getKey(); 3 System.out.println(place_piece); 4 for(int i = 1; i < industryMap.size(); i++){ 5 for(int j = 1; j < typeOfIndustryMap.size(); j++){ 6 int industry_num = industryMap.get(i); 7 int type_of_industry_num = typeOfIndustryMap.get(j); 8 System.out.println(industry_num); 9 System.out.println(type_of_industry_num); 10 clientList.addAll(searchClientDao.searchClientList(place_piece , price_min , price_max , type_of_industry_num , industry_num)); 11 } 12 } 13 }

ここが丸々処理されずにJSPにディスパッチしてしまいます。

処理自体は間違っている可能性大ですので、気にしないで下さい笑

原因が全くわかりませんので、
ご教授いただけるとありがたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

for文がマルっと処理されないのなら、
条件にしているmapが空っぽなのではないでしょうか?
検索条件にヒットするデータがないとか、SQLが間違っているとか。
Ngram.createNgram()で何を処理しているか分かりませんが、
そこで作成しているMapに何も入っていないのだと思います。

投稿2015/06/25 05:11

kaputaros

総合スコア1844

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

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

Sfidante

2015/06/25 05:22

ご回答ありがとうございます。 mapが処理されるfor文を省いて処理させてみましたが、 内側のfor文の方も処理がありませんでした。 また、エラーが全く出力されていないのですが、 mapが空っぽということはあるのでしょうか?
OpShig

2015/06/25 06:15

for文の直前でmap.size()で中身のサイズを調べてみてはいかがでしょうか。 ちなみにMapが空でもfor文はエラー出ないです。0周のfor文がエラーにならないのと一緒です。
kaputaros

2015/06/25 06:57 編集

> for(int i = 1; i < industryMap.size(); i++){ > for(int j = 1; j < typeOfIndustryMap.size(); j++){ の部分ですね。 確かにフィールドでnewしているので、map自体には値がputされていますが、 typeOfIndustryMapにputしている部分が全て key = 1 に対して値を紐付けているため、 typeOfIndustryMap.size() が 1になっていると思います。 (1つのkeyに上書きしています。) for文の初期値 j に1がきているので、条件式 j < typeOfIndustryMap.size() の部分が 1 < 1 となり、for文内の処理が一度も実行されることなく進んでしまっているのだと思います。 industryMap と typeOfIndustryMap を取り扱っている for文を 条件部 ⇒ map.size()+1 とするか、 for (Integetr key : map.keySet()) { System.out.println(map.get(key)); } のようにするか、にしたら良いかと思います。
Sfidante

2015/06/25 08:47

お二方共ありがとうございました。 >for文の直前でmap.size()で中身のサイズを調べてみてはいかがでしょうか。 >ちなみにMapが空でもfor文はエラー出ないです。0周のfor文がエラーにならないのと一緒です。 おっしゃる通り、map.sizeが0でありました。 それに対しての処理をおこない改善しました。 >typeOfIndustryMapにputしている部分が全て key = 1 に対して値を紐付けているため、 >typeOfIndustryMap.size() が 1になっていると思います。 凡ミスですね。汗 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問