1

USBドライブからAndroid4.0タブレットにテキストファイルを読み込んでいます。その多くの行はタブで始まります。言語のクイズユーティリティであるため、典型的な行は

[tab]an experience[crlf]

分割すると、空の配列要素があります。これまでのところ、をテストすることによってのみ検出できますstringJustSplit[0].length( ) == 0長さは要素に関する属性ですが、それが等しいものではないため、これは安全ではありません。もちろん==""== null私はどこにも行きませんでした。

オプションは表示されRemoveEmptyEntriesますが、空の要素を残したいので、プログラムは意図的にそれらに応答します。

それらを理解するステートメントはありますか?

ログは以下を生成します:

    ---Array trial---(6229): Start
    ---Array trial---(6229): Located by length( )==0.
    ---Array trial---(6229): End

この方法から:

while ((Fileline = buffered_reader.readLine( )) != null) {
    line2array = Fileline.split("\\t");
    String[] tester = new String[1];
    String dummyStr = "|element1";
    String[] emptyField = dummyStr.split("\\|");
    if (true)                         {Log.v(T, "Start results");}
    if (line2array[0] == emptyField[0]){Log.v(T, "Located by array element created similar way.");}
    if (line2array[0] == tester[0])   {Log.v(T, "Located by comparison w just-made array.");}
    if (line2array[0].length( ) == 0) {Log.v(T, "Located by length( ) == 0.");}
    if (line2array[0] == "")          {Log.v(T, "Located by zero-len string.");}
    if (line2array[0] == null)        {Log.v(T, "Located by null.");}
    if (true)                         {Log.v(T, "End");}
    }
4

1 に答える 1

0

equalsJavaでは、文字列の内容を比較するメソッドが必要です==。変数がメモリ内の同じアドレスを参照しているかどうかを比較します。

したがって、コードは次のようになります。

// can't call .equals on something that is null
if (line2array[0] != null && line2array[0].equals(emptyField[0])) {
  Log.v(T, "Located by array element created similar way.");
}
if (line2array[0] != null && line2array[0].equals(tester[0])) {
  Log.v(T, "Located by comparison w just-made array.");
}
if (line2array[0].length() == 0) {
  Log.v(T, "Located by length( ) == 0.");
}
// literals are never null
if ("".equals(line2array[0])) {
  Log.v(T, "Located by zero-len string.");
}
if (line2array[0] == null) {
  Log.v(T, "Located by null.");
}
if (true) {
  Log.v(T, "End");
}
于 2012-07-02T15:33:59.367 に答える