2017-11-06 15 views
-2

私は、常に値が1または0のint配列の出力を与える関数を持っています。これは可能な出力のいくつかの例です:入力としてこれを使用int配列とJavaの文字列配列を関連付けます

[1, 1, 0, 1, 0] or [0, 0, 1, 0, 1] or [1, 1, 1, 1, 1] 

、I 1が文字列配列になることを示し、0はことを示す文字列の配列とこのint配列を関連付けするJava関数を作成する必要がありますそれは配列に含まれません。例えば:

[1, 1, 1, 1, 1] => ["Tweet", "Email", "Text", "Phone Call", "Voicemail"] 
[0, 1, 1, 0, 1] => ["", "Email", "Text", "", "Voicemail"] 
[0, 0, 0, 0, 0] => ["", "", "", "", ""] 

私はこのような何かをやっていると考えることができますすべて:

public String[] myFunc(int[] arr) { 

    String[] output = [5]; 

    for (int i = 0; i < arr.length; i++) { 
    switch (i) { 
     case 0: 
     if (arr[i] == 1) 
      output[i] = "Tweet"; 
     else 
      output[i] = ""; 
     break; 

     case 1: 
     if (arr[i] == 1) 
      output[i] = "Email"; 
     else 
      output[i] = ""; 
     break; 

     case 2: 
     if (arr[i] == 1) 
      output[i] = "Text"; 
     else 
      output[i] = ""; 
     break; 

     case 3: 
     if (arr[i] == 1) 
      output[i] = "Phone Call"; 
     else 
      output[i] = ""; 
     break; 

     case 4: 
     if (arr[i] == 1) 
      output[i] = "Voicemail"; 
     else 
      output[i] = ""; 
     break; 
    } 
    } 
    return output; 
} 

これはかなり醜いソリューションです、と私は確信している、それはいくつかの種類を実装することによって、より良い行うことができますオブジェクトの値をマップするが、私はあまりJavaに精通していないと助けを感謝します!

+2

http://idownvotedbecau.se/noattempt/ – bcsb1001

+0

'IntStream.range(0、ints.length).MAPを試してみてください(I - > int型[I] == 0 ""? :strings [i])。toArray(String [] :: new) ' – shmosel

答えて

0

この

boolean[] booleanArray = new boolean[] { true, false, true, false, true }; 
    String[] stringArray = new String[] { "Tweet", "Email", "Text", "Phone Call", "Voicemail" }; 
    String[] stringResult = new String[5]; 
    for (int i=0;i<booleanArray.length;i++) { 
     if (booleanArray[i]) { 
      stringResult[i] = stringArray[i]; 
     } else { 
      stringResult[i] = ""; 
     } 
    } 
関連する問題