if分岐で設定しない場合があることを考えると、設定されていないということは条件に当てはまっていないのでは、と想像がつくかと思います。
java
1String[] aaa = para.split("&");
2for (int iII = 0; iII < aaa.length; iII++) {
3
4 String[] bbb = aaa[iII].split("=");
5
6 if ((bbb != null) && (bbb.length == 2)) {
7
8 h_para.put(bbb[0], bbb[1]);
9
10 } else {
11 System.out.println("else! bbb.length: " + bbb.length + " (" + Arrays.toString(bbb) + ")");
12 }
13
14}
bbb.length
が3
なためですね。
おそらく所望の動作は[こちら](https://docs.oracle.com/javase/jp/6/api/java/lang/String.html#split(java.lang.String, int))の、引数を2つ採るString#split(String,int)
かと。
java
1String[] bbb = aaa[iII].split("=", 2);
で想定の動作となると思います。
(コメントを受けて追記)
上記文中に示した、引数2個のsplit
メソッドのリンク先説明を読んでいただきたいのですが、第2引数で指定した2
は、最大で2個に分割する、という意味です。ですので、書かれている
java
1if ((bbb != null) && (bbb.length == 2)) {
2// 省略
3} else {
4 System.out.println("else! bbb.length: " + bbb.length + " (" + Arrays.toString(bbb) + ")");
5 for (int i = 1; i < bbb.length; i++) {
6 bbb[1] = bbb[1] + bbb[i];
7 }
8 h_para.put(bbb[0], bbb[1]);
9}
のelse
に入るのは、bbb
がnull
か、length
が2未満(つまり0か1)のときだけです。
このようなとき、else
内に書かれているfor文の中に入ることはありません。
data= aa=yy,hhhjjj=っgh
も split("=", 2)
で2個に分割されますので、else
ではなくif
の方に入ります。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/15 03:56
2015/12/15 05:44
2015/12/15 06:09