2016-11-08 66 views
0

我正在尝试执行乘法表,并在我的“我”的代码中收到“无法到达的代码”错误。是因为我没有IF吗?或者我该如何解决这个问题?C中无法访问的“我”#

public int[,] CalculateMultMatrix() 
{ 
    int[,] multTable = new int[10, 10]; 
    for(int i = 1; 1 <= 10; i++) 
    { 
     for(int j = 1; j <= 10; j++) 
     { 
      multTable[i - 1, j - 1] = i * j;      
     } 
     return multTable; 
    } 
} 
+14

你有一个错字'1 <= 10'而不是'i <= 10'。你的结束条件也要严格小于10,因为c#数组从索引0开始。另外,你从外部循环中的*返回。这是你想要的吗? – ChrisF

+0

返回也是iffy(回答现在删除)'我'只会永远等于1. – Liam

回答

0

你内环路返回multTable,所以i将永远只能是1,这是警告的原因,为i++永远不能被称为是“无法访问”。

您可能打算在两个循环完成后返回它。你也有什么看起来像一个错字 - 条件1 <= 10将永远是true。您还需要修复此问题,否则该循环将永远无法完成。

int[,] multTable = new int[10, 10]; 

for(int i = 1; i <= 10; i++) 
{ 
    for(int j = 1; j <= 10; j++) 
    { 
     multTable[i - 1, j - 1] = i * j;      
    } 
} 

return multTable; 
+0

感谢您的所有好的答案!你现在不打印任何东西。主文件中应该包含什么内容? – Hippimaster

+0

@hippimaster你应该发布一个新问题 –

5

第一个问题是你比较1 <= 101将始终小于10。将其更改为for (int i = 1; i <= 10; i++)

第二个问题:您在循环内部返回multTable。该方法将在i++被调用之前完成。

+1

这不会导致编译器错误。 –

+1

@ Code-Apprentice第二句话呢? – Liam

+0

@代码学徒“*无法到达的代码检测*”是一个警告,而不是编译器错误。 –

0

在第4行中,短语1 <= 10将始终为true

+0

这不会导致编译器错误。 –

2

问题出在return声明中。它在外部i循环内。 只是把它放在循环之外。另外,请更正问题评论中提到的错字。

for(int i = 1; i <= 10; i++) 
{ 
    for(int j = 1; j <= 10; j++) 
    { 
     multTable[i - 1, j - 1] = i * j;      
    } 
} 
return multTable; 
0
return multTable; 

这会导致所有停止执行当前功能。你得到的错误,因为i++将永远不会有机会在你的for循环中执行。

p.s.虽然其他答案指出了代码中的另一个问题,但它们没有解决编译器错误的原因。