2015-10-07 44 views
-1

我的方法應該檢查以查看我通過的int數組是否有任何負值,如果是這樣,它應該將它們保存到一個字符串中並將它們一起返回他們位於的索引。此時該方法只返回數組的第一個負值。我如何使每個負值和它的索引被添加到一個字符串?如何從C#中的int數組方法返回一個字符串

public static string FindNegative(int[] array) 
{ 
    string yes = null; 
    foreach (var n in array) 
     { 
     if (n < 0) 
     { 
      yes += (Array.IndexOf(array, n) + ":" + n + ","); 
     } 
     return yes; 
    } 
    return null; 
} 
+4

移動你的 '回報是' 出來的foreach循環。 – geedubb

回答

1
public static string FindNegative(int[] array) 
{ 
    string yes = null; 
    foreach (var n in array) 
     { 
     if (n < 0) 
     { 
      yes += (Array.IndexOf(array, n) + ":" + n + ","); 
     } 

    } 
    return yes; 
} 

雖然,這將工作太:

public static string FindNegative(int[] array) 
{ 
    return String.Join(",",array.Where(x=>x<0) 
     .Select((e,i)=>String.Format("{0}:{1}",i,e))); 
} 

不過,我會推薦這:

public class FindNegativeResult { 
    public int Index {get;set;} 
    public int Number {get;set;} 
} 
public static IEnumerable<FindNegativeResult> FindNegative(int[] array) 
{ 
    return array.Where(x=>x<0) 
     .Select((e,i)=>new FindNegativeResult {Index=i, Number=e}); 
} 
+0

不會'TrimEnd(',');'工作以及? – rreg101

+1

TrimEnd(',')也可以工作,但String.Join並不使用字符串連接,而是使用字符串生成器,所以它的速度也快很多倍。 –

1

那是因爲你是從循環,改變內回國代碼如下&結束時返回yes。

public static string FindNegative(int[] array) 
{ 
    string yes = null; 
    foreach (var n in array) 
     { 
     if (n < 0) 
     { 
      yes += (Array.IndexOf(array, n) + ":" + n + ","); 
     } 
     //return yes; 
    } 
    return yes; 
} 
1

更改您的代碼如下:

public static string FindNegative(int[] array) 
{ 
    string yes = null; 

    foreach (var n in array) 
     { 
     if (n < 0) 
     { 
      yes += (Array.IndexOf(array, n) + ":" + n + ","); 
     } 
    } 

    return yes; 
} 
1
public static string FindNegative(int[] array) 
{ 
    string yes = String.Empty; 

    foreach (var n in array) 
     if (n < 0) 
      yes += (Array.IndexOf(array, n) + ":" + n + ","); 

    return yes; 
} 
+0

像StyleCop這樣的靜態分析工具將捕獲foreach循環周圍的缺失大括號,並且如果條件成立。 :p – niksofteng

相關問題