多次元配列の処理について
多次元配列を扱った処理を行ないたいのですが、一部でnullを受け取ってしまい、処理を行うことができません。
引数の配列には次のようなテキストが入っています。
--配列の内容--
0,名詞-一般,1,5,
0,名詞-数,2,6,
0,名詞-接尾-助数詞,3,7,
--------------
この配列をコマンドラインに書き出すと正確に表示されます。
しかし、配列の内容を参照して処理を行なうと2列目の処理のときにnullを参照してしまいます。
プログラムは以下のとおりです。
---プログラム---
public class Dist {
public static int zairyo(String[][] date) {
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
if(date != null) {
int f = 0;
System.out.println("//Dist//");
for(int m = 0; m < date.length; m++) {
for(int n = 0; n < date[0].length; n++) {
if(date[m][n] != null) {
System.out.print(date[m][n] + "\t");
f++;
if(f == date[0].length) {
System.out.println("");
f = 0;
}
}
}
}
for(int i = 0; i < date.length; i++) {
if(date[i][1] != null) {
if(date[i][1] == "名詞-一般")
a++;
if(date[i][1] == "名詞-数")
b++;
if(date[i][1] == "名詞-接尾-助数詞")
c++;
}else System.out.println("2列目null");
}
int j = date.length - 1;
d = Integer.parseInt(date[j][2]);
e = Integer.parseInt(date[j][3]);
}else System.out.println("Dist:null");
if(a > 0 && b > 0 && c > 0 && d <= 10 && e <= 15) {
return 1;
}else return 0;
}
}
------------------------
原因は何なのでしょうか?
ご教授お願いします。
お礼
返事がおくれてしまい失礼しました。 ?と:による判定も簡潔ですね。 書式指定も加えて、 int n = 1000; String d = (n==0) ? "" : new String(new DecimalFormat("#,###").format(n)); とすることも可能ですね。 ただ、"#####" という書式指定で、なぜゼロの時、"0" が表示されるのかなと思っています。どこかが間違っているのか。 ゼロをヌル表示するニーズがないんでしょうかね。 ありがとうございました。