2012-04-04 12 views
1

私はそれを少し読んでいます。私は、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 = ""; 
    } 
    } 
} 

EDIT

だから私はいくつかの人が述べたように、配列に設定する必要があり、私は最初の場所でのアレイを構築する場合、それは素晴らしい作品が、私はそれをしない場合動作しません。

ここで固定する方法です。

/** 
    * 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 

答えて

1

あなたは、アレイに割り当てる必要があります。

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

チェックに割り当て、配列を変更しません。

+0

は私が最初の場所でのアレイを構築する必要がないようにするための方法はありますか? – kentcdodds

+0

通常のvar argsでは、パラメータのオブジェクトを持つ配列がメソッド呼び出しのために構築されるため、元のシナリオと同じ問題が発生するため、これを構築する必要があります。 – MByD

+0

私はあなたに追いついていると私は確信していないと私はそれが動作しない理由を理解していないが、私はあなたが残念ながら正しいと思う... – kentcdodds

0
public static void setNullValuesBlank(String... checkNull) 
{ 
    for(int i = 0; i < checkNull.length; i++) if(checkNull[i] == null) checkNull[i] = ""; 
} 
+0

最初にアレイを構築する必要はありませんか? – kentcdodds

+0

@kentcdoddsはい、文字列をそれぞれパラメータとして渡します。つまり、 'setNullValuesBlank(str1、str2、str3);' –

+0

何らかの理由でそれが機能しません(私の編集を参照)。 – kentcdodds

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] = ""; 
     } 
    } 

} 
+0

最初に配列を構築する必要がない方法はありますか? – kentcdodds

関連する問題