class mat{
int i, j, m, n;
int[,] a = new int[20, 20];
public static int Diagleft(int m,int n)
{
int d = 0,i,j;
if (m == n)
{
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
if (i == j)
{
int value_1 = Math.Abs(a[i, j]);
d = d + value_1;
}
}
}
return d;
}
}
class matsum
{
public static void Main(string[] args)
{
Console.WriteLine("Enter Row Value");
m = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Column Value");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Elements one by one");
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
a[i, j] = int.Parse(Console.ReadLine());
}
}
Console.WriteLine("Given Matrix");
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
Console.Write("\t{0}", a[i, j]);
}
Console.WriteLine();
}
mat ma = new mat();
int result = mat.Diagleft(m, n);
Console.WriteLine("Left Diagonal is: {0}", result);
Console.ReadKey();
}
}
我无法修复我的代码。请帮忙。我不知道如何修复CS01020。我觉得我对课程犯了错误。这是我的功课。我认为这个错误可以很快解决。我称之为主要的3种方法。这些代码中有令牌代码。所以我的代码被忽略了。我正在尝试按需要制作此代码。但是我无法实现。这是第一个被忽略的代码。尽管它运行正常:
class mat
int i, j, m, n;
int[,] a = new int[20, 20];
public void get()
{
Console.WriteLine("Enter Row Value");
m = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Column Value");
n = int.Parse(Console.ReadLine());
Console.WriteLine("Enter Elements one by one");
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
a[i, j] = int.Parse(Console.ReadLine());
}
}
Console.WriteLine("Given Matrix");
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
Console.Write("\t{0}", a[i, j]);
}
Console.WriteLine();
}
}
public void diagleft()
{
int d = 0;
if (m == n)
{
for (i = 1; i <= m; i++)
{
for (j = 1; j <= n; j++)
{
if (i == j)
{
int value_1 = Math.Abs(a[i, j]);
d = d + value_1;
}
}
}
Console.WriteLine("Diagonal Sum from left side= {0}", d);
}
else
{
Console.WriteLine("Can't Perform Diagonal Sum from left side");
}
}
public void diagright()
{
int z = 0;
if(m==n)
{
for (i = 1; i <= m; i++)
{
for(j=n; j >= 1; j--)
{
if(i+j==(m+1))
{
int value_2 = Math.Abs(a[i, j]);
z = z + value_2;
}
}
}
Console.WriteLine("Diagonal Sum from right side= {0}", z);
}
else
{
Console.WriteLine("Can't perform diagonal sum from right side");
}
}
class matsum
{
static void Main(string[] args)
{
mat ma = new mat();
ma.get();
ma.diagleft();
ma.diagright();
Console.Read();
}
}
答案 0 :(得分:0)
在你的函数Diagleft(m,n)
中如果m!= n
,则没有返回语句答案 1 :(得分:0)
我认为问题是你在这一行上得到一个CS0120(非静态字段,方法或属性'成员'需要一个对象引用)错误:
int value_1 = Math.Abs(a[i, j]);
这是因为“int [,] a”声明需要是静态的,如下所示:
static int[,] a = new int[20, 20];
由于Diagleft方法是静态的,它只能访问类的静态成员。它将无法访问实例变量。
顺便说一句,您的Diagleft方法也不会在所有代码路径上返回值。另外,使用相同的名称(即i和j变量)使本地方法变量和类的私有成员变量令人困惑。