Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数组函数中的错误“;并非所有代码路径都返回一个值";? 公共静态int[]twoSum(int[]arr,int-target) { 对于(int i=0;i_C# - Fatal编程技术网

C# 数组函数中的错误“;并非所有代码路径都返回一个值";? 公共静态int[]twoSum(int[]arr,int-target) { 对于(int i=0;i

C# 数组函数中的错误“;并非所有代码路径都返回一个值";? 公共静态int[]twoSum(int[]arr,int-target) { 对于(int i=0;i,c#,C#,我已经编写了一个函数,但它给了我一个错误,说“并非所有代码路径都返回值”2次,我真的不明白问题在哪里,请帮助我解决这个问题。我真的很难解决这个错误。您忘了返回循环外的内容: public static int[] twoSum(int[] arr, int target) { for ( int i = 0; i < arr.Length; i++ ) { for ( int j = i + 1; j < arr.Length; j++ ) { i

我已经编写了一个函数,但它给了我一个错误,说“并非所有代码路径都返回值”2次,我真的不明白问题在哪里,请帮助我解决这个问题。我真的很难解决这个错误。

您忘了返回循环外的内容:

public static int[] twoSum(int[] arr, int target)
{
  for ( int i = 0; i < arr.Length; i++ )
  {
    for ( int j = i + 1; j < arr.Length; j++ )
    {
      if ( ( arr[i] + arr[j] ) == target )
      {
        return new int[] { i, j };
      }
    }
  }
}
公共静态int[]twoSum(int[]arr,int-target)
{
对于(int i=0;i

实际上,在
的情况下,如果
条件从未满足,则该方法需要返回一个thing、
null
、一个空数组
new int[0]
或您想要的内容,因为循环中的子句
return
从未到达。

错误意味着所有路径(如果-否则,在for/while之后会发生什么)应该返回某些内容(与声明的返回类型匹配)

在您的情况下,您只需要在末尾返回:

public static int[] twoSum(int[] arr, int target)
{
  for ( int i = 0; i < arr.Length; i++ )
    for ( int j = i + 1; j < arr.Length; j++ )
      if ( ( arr[i] + arr[j] ) == target )
        return new int[] { i, j };
  return null;
}
公共静态int[]twoSum(int[]arr,int-target)
{
对于(int i=0;i
考虑一下在任何情况下
(arr[i]+arr[j])==target
会发生什么。是的,我现在明白了,问题是只有当满足if条件时,它才会返回。但是如果if语句不满足,那么就没有什么可返回的,因为我的函数在任何情况下都需要返回某些东西,这就是发生错误的原因。我是对的吗?是的,我现在明白了,问题是只有当if条件满足时,它才会返回。但是如果if语句不满足,那么就没有什么可返回的,因为我的函数在任何情况下都需要返回某些东西,这就是发生错误的原因。我说得对吗?是的,就是这样。
 public static int[] twoSum( int[] arr, int target)
 {

   for (int i = 0; i < arr.Length; i++) 
        {
      for (int j = i + 1; j < arr.Length; j++)
          {  
         if ((arr[i] + arr[j]) == target)
          {
            return new int[] {i , j};
          }
        }
     }
     return null;
  }