2017-09-14 43 views
0

因此,我的代码的目标是在数字网格中选取两个点,并在计算网格中距离两个点最近的其他每个点时获得最高数值。在输入这段代码时,我试图使用私有字段变量来保存两个指针的当前位置,但是我收到了字段变量的错误以及我在此网格中创建的任何调用。命名空间中的C#中的字段方法

namespace Program 
{ 

private int xMe; 

private int yMe; 

private int zMe; 

private int xEn; 

private int yEn; 

private int zEn; 

private int dif = 0; 
public class Castles 
{ 
    public static string Process(uint[,] grid) 
    { 
     int taxX = 0; 
     int taxY = 0; 

     for (int i = 0; i < grid.GetLength; i++) 
     { 
      for(int j = 0; j < grid[i]; j++) 
      { 
       for(int k = 0; k < grid.GetLength; k++) 
       { 
        for(int l = 0; l < grid[k]; l++) 
        { 
         if (distance(i, j, k, l) > 3) 
         { 
          if (grid[i, j] != 0 && grid[k, l] != 0) 
          { 
          for (int m = 0; grid.GetLength; m++) 
          { 
           for (int n = 0; grid[m]; n++) 
           { 
            if (grid[i, j] != grid[m, n] || grid[k, l] != grid[m, n]) 
            { 
              if(distance(i,j,m,n) > distance(m, n, k, l)) 
              { 
               taxX = taxX + distance[m, n]; 
              } 
              else if(distance(i,j,m,n)< distance(m, n, k, l)) 
              { 
               taxY = taxY + distance[m, n]; 
              } 
              else 
              { 

              } 
            } 
           } 
          } 
          if(taxX - taxY > dif) 
           { 
            xMe = i; 
            yMe = j; 
            xEn = k; 
            yEn = l; 
            zMe = taxX; 
            zEn = taxY; 
            dif = taxX - taxY; 
           } 
         } 
         } 
        } 
       } 
      } 
     } 

     return "Your castle at (" + xMe + "," + yMe + ") earns " + zMe + ". Your nemesis' castle at (" + xEn + "," + yEn + ") earns " + zEn + "."; 
    } 

    public int distance(int x, int y, int a, int b) 
    { 
     int c = a - x; 
     int d = b - y; 
     return Math.Sqrt(c^2 + d^2); 
    } 

    static void Main(string[] args) 
    { 
     System.Console.WriteLine(""); 
    } 
} 

}

这是我第一次探索C#所以这可能是一个简单的修复,但任何帮助将是

+2

fields * must *是类或结构的成员。 –

+0

那么我会如何将它们添加到类或结构? – Darkhail

+1

将它们移动到Castles中... – norlesh

回答

1

就移动领域的定义在类定义的内部有用...

namespace Program 
{  

public class Castles 
{ 
    private int xMe; 

    private int yMe; 

    private int zMe; 

    private int xEn; 

    private int yEn; 

    private int zEn; 

    private int dif = 0; 

    public static string Process(uint[,] grid) 
    { 
     int taxX = 0; 
     int taxY = 0; 

     for (int i = 0; i < grid.GetLength; i++) 
     { 
      for(int j = 0; j < grid[i]; j++) 
      { 
       for(int k = 0; k < grid.GetLength; k++) 
       { 
        for(int l = 0; l < grid[k]; l++) 
        { 
         if (distance(i, j, k, l) > 3) 
         { 
          if (grid[i, j] != 0 && grid[k, l] != 0) 
          { 
          for (int m = 0; grid.GetLength; m++) 
          { 
           for (int n = 0; grid[m]; n++) 
           { 
            if (grid[i, j] != grid[m, n] || grid[k, l] != grid[m, n]) 
            { 
              if(distance(i,j,m,n) > distance(m, n, k, l)) 
              { 
               taxX = taxX + distance[m, n]; 
              } 
              else if(distance(i,j,m,n)< distance(m, n, k, l)) 
              { 
               taxY = taxY + distance[m, n]; 
              } 
              else 
              { 

              } 
            } 
           } 
          } 
          if(taxX - taxY > dif) 
           { 
            xMe = i; 
            yMe = j; 
            xEn = k; 
            yEn = l; 
            zMe = taxX; 
            zEn = taxY; 
            dif = taxX - taxY; 
           } 
         } 
         } 
        } 
       } 
      } 
     } 

     return "Your castle at (" + xMe + "," + yMe + ") earns " + zMe + ". Your nemesis' castle at (" + xEn + "," + yEn + ") earns " + zEn + "."; 
    } 

    public int distance(int x, int y, int a, int b) 
    { 
     int c = a - x; 
     int d = b - y; 
     return Math.Sqrt(c^2 + d^2); 
    } 

    static void Main(string[] args) 
    { 
     System.Console.WriteLine(""); 
    } 
} 
+0

'Process()'是一种静态方法。 – Jasen