Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(webの一致部分を配列に格納したい)
閲覧数:582
掲示板(webの一致部分を配列に格納したい)
名前
匿名
題名 webの一致部分を配列に格納したい
質問内容

質問を評価する
(0ポイント)
try{
                URL L01 = new 
URL(C00);
                BufferedReader L02 
= new BufferedReader(new 
InputStreamReader(L01.openStream()));
                
                String L03;
                Pattern L04 = 
Pattern.compile(C01, Pattern.CASE_INSENSITIVE);
                
                while((L03 = 
L02.readLine()) != null){
                    Matcher 
L05 = L04.matcher(L03);
                    
while(L05.find()){

このL05を配列に格納したいのですが,どのようにすれば
よいでしょうか.
質問日時 2013-10-03 10:06:57
名前
匿名
回答内容

回答を評価する
(0ポイント)
数が不明なものを配列に入れたい場合、ListやSet、場合に
よってはMapに格納して、最後に配列に変換する。
そもそもCollectionで問題ないならI/Fを変える。
回答日時 2013-10-03 11:03:17
名前
匿名
回答内容

回答を評価する
(0ポイント)
listは使ってみたのですが,作られていないことになっ
てしまいます.使い方がおかしいのでしょうか.

        public static void main(String[] 
args){
            
            List list = new 
ArrayList();
            int L00 = 0;
            
            try{
                URL L01 = new 
URL(C00);
                BufferedReader L02 
= new BufferedReader(new 
InputStreamReader(L01.openStream()));
                
                String L03;
                Pattern L04 = 
Pattern.compile(C01, Pattern.CASE_INSENSITIVE);
                
                while((L03 = 
L02.readLine()) != null){
                    Matcher 
L05 = L04.matcher(L03);
                    
while(L05.find()){
                        
for (int i = 0;i < list.size();i++){
                        
list.add(L05.group(1));
                        }
                        
L00++;
                        }
                    
System.out.println(list.get(2));
                }
回答日時 2013-10-03 12:56:57
名前
匿名
回答内容

回答を評価する
(0ポイント)
Listは生成時は空なのです。
list.add()する前にfor文のlist.size()でサイズを参照していますが、
これは上記のコードだと常に0になります。
回答日時 2013-10-03 13:09:30
名前
匿名
回答内容

回答を評価する
(0ポイント)
whileで一致するものがある限りまわすのでそのまま
list.add(L05.group(1));
にしてみたのですけど,格納されてないみたいです.
回答日時 2013-10-03 13:31:27
名前
匿名
回答内容

回答を評価する
(0ポイント)
なんでその追加

for (int i = 0;i < list.size();i++){

で回してるのさ、という話だよ。
意味理解して書いてる?
回答日時 2013-10-03 13:59:53
名前
匿名
回答内容

回答を評価する
(0ポイント)
すいません.そこは理解したので,その部分はアウトしま
した.
このwhileの間は,配列にL05.group()は追加されないので
しょうか.
回答日時 2013-10-03 14:07:23
名前
匿名
回答内容

回答を評価する
(0ポイント)
>このwhile
とは?
回答日時 2013-10-03 14:20:08
名前
匿名
回答内容

回答を評価する
(0ポイント)
説明不足でした.
while(L05.find()){
                        
                        
list.add(L05.group(1));
                        
                        
L00++;
                        }

としたということです.
回答日時 2013-10-03 14:23:07
名前
匿名
回答内容

回答を評価する
(0ポイント)
C01の正規表現に何もマッチしないからでしょう。
回答日時 2013-10-03 14:59:19
名前
匿名
回答内容

回答を評価する
(0ポイント)
出力すると377件あるのでマッチしていると思います.
別のアプローチのほうがいいのでしょうか.

回答日時 2013-10-03 15:03:06
名前
匿名
回答内容

回答を評価する
(0ポイント)
まず、1ステップごとに変数が期待通りになってるか、
確認してみる。
うまくいかない原因が何なのか、きちんと理解すること。
その結果として今のアプローチでは不可能または膨大な
作業量になると判明したなら、別のアプローチを考える。

原因も分からないのに、うまく行かないというだけで
今やっていることを投げ出してはいけない。
回答日時 2013-10-03 18:15:42
名前
匿名
回答内容

回答を評価する
(0ポイント)
ありがとうございます.ワンステップごとに確かめてみま
す.
回答日時 2013-10-04 15:58:48
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道