2

私はそれを少し読みましたが、Javaでは指定されたパラメーターの元の値を変更できず、メソッドが終了した後もそれらが持続することを期待していることを理解しています。しかし、これを行うための良い方法を知りたいです。このメソッドを機能させるために何ができるかについて、誰かが私にいくつかの指針を教えてもらえますか? ありがとう。

/**
* This will set values in the given array to be "" (or empty strings) if they are null values
*
* @param checkNull
*/
public static void setNullValuesBlank(String... checkNull) {
  for (int i = 0; i < checkNull.length; i++) {
    String check = checkNull[i];
    if (check == null) {
      check = "";
    }
  }
}

編集

したがって、何人かが言及したように配列に設定する必要があり、最初に配列を構築するとうまく機能しますが、そうしないと機能しません。

固定方法は次のとおりです。

/**
  * This will set values in the given array to be "" (or empty strings) if they are null values
  *
  * @param checkNull
  */
public static void setNullValuesBlank(String... checkNull) {
  for (int i = 0; i < checkNull.length; i++) {
    if (checkNull[i] == null) {
      checkNull[i] = "";
    }
  }
}

これが機能する呼び出しは次のとおりです。

String s = null;
String a = null;
String[] arry = new String[]{s, a};
for (int i = 0; i < arry.length; i++) {
  System.out.println(i + ": " + arry[i]);
}
setNullValuesBlank(arry);
for (int i = 0; i < arry.length; i++) {
  System.out.println(i + ": " + arry[i]);
}

これは機能しない呼び出しですが、私はそれをしたいです:

String q = null;
String x = null;
System.out.println("q: " + q);
System.out.println("x: " + x);
setNullValuesBlank(q, x);
System.out.println("q: " + q);
System.out.println("x: " + x);

その出力:

q: null
x: null
q: null
x: null
4

3 に答える 3

2

配列に割り当てる必要があります。

if (checkNull[i] == null) {
  checkNull[i] = "";
}

チェックに割り当てても、配列は変更されません。

于 2012-04-04T10:08:43.160 に答える
0

値を配列に保存する必要があります。

import java.util.Arrays;

public class NullCheck {

    public static void main( final String[] args ) {
        final String[] sa = { null, null };
        System.out.println( Arrays.toString( sa ) );
        check( sa );
        System.out.println( Arrays.toString( sa ) );
    }

    private static void check( final String... a ) {
        for ( int i = 0; i < a.length; i++ ) {
            if ( a[i] == null ) a[i] = "";
        }
    }

}
于 2012-04-04T10:11:05.277 に答える
0
public static void setNullValuesBlank(String... checkNull)
{
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = "";
}
于 2012-04-04T10:09:06.353 に答える