三重循环如何直接从最内层退到第一层?因break只能直接退到第二层。例如
for (i = 1; i <= bn; i++)
{
for (j = 1; j <= cc - 1; j++)
{
for (l = j + 1; l <= cc; l++)
{
if (k2 >= 2 && k3 >= 1)
{
break;
}
}
}
}
for (i = 1; i <= bn; i++)
{
for (j = 1; j <= cc - 1; j++)
{
for (l = j + 1; l <= cc; l++)
{
if (k2 >= 2 && k3 >= 1)
{
break;
}
}
}
}
解决方案 »
- C#绑定DataGridView.数据源是List<>.怎么绑定?
- 每当MessageBox.Show(),或出现错误窗口的时候,执行一些操作,行吗?
- TextBox问题
- 怎么样才能更改窗体标题拦的色彩
- 大家有谁用过在C#中运用SQLDMO备份和恢复Microsoft SQL Server数据库 网上的方法几乎都一样 源码在帖子里面 希望指点一下
- params SqlParameter[] commandParameters
- 求 SQL 全文搜索 中优先表字段的问题?
- 如何用.NET开发出似QQ的聊天软件
- 请教:在VS.Net中如何调试安装程序????
- 我今天装了vs.net bete2 中文版,但是总是提示“找不到文件或程序集名称system”
- thread.sleep(32)实际是thread.sleep(47)想实现thread.sleep(40)怎么办?
- 高手帮忙看看
bool flag=false;
for (i = 1; i <= bn; i++)
{
for (j = 1; j <= cc - 1; j++)
{
for (l = j + 1; l <= cc; l++)
{
if (k2 >= 2 && k3 >= 1)
{
flag=true;
break;
}
}
if(flag) break;
}
if(flag) break;
}
必须用bool flag=false;
不能直接吗
{
for (j = 1; j <= cc - 1 && continueTask; j++)
{
for (l = j + 1; l <= cc && continueTask; l++)
{
if (k2 >= 2 && k3 >= 1)
{
continueTask =false;
}
}
}
}
bool isnan;
input:
Console.WriteLine("请输入一个数字:");
int a = Convert.ToInt32(Console.ReadLine());
if(a<10)
{
conlose.write("OK");
isnan=true;
}
else
{
conlose.write("NO!");
isnan=false;
}
if(isnan=false){
goto:input;
}
在循环体中:break是退到所在循环的上级循环(父循环),
而“return”则是退出整个循环。
{
for (int i = 1; i <= bn; i++)
b(i);
} void b(int i)
{
for (int j = 1; j <= cc - 1; j++)
{
for (int l = j + 1; l <= cc; l++)
{
if (k2 >= 2 && k3 >= 1)
return;
}
}
}或者 for (int i = 1; i <= bn; i++)
{
next:
for (int j = 1; j <= cc - 1; j++)
{
for (int l = j + 1; l <= cc; l++)
{
if (k2 >= 2 && k3 >= 1)
goto next;
}
}
}
个人推荐:大胆使用goto(这是个双刃剑,用好得下点细心的功夫)或者 按楼上诸公的增设标志层层退出(这种符合结构化程序设计思想)
不然导致的后果,理论书和导师们都说了N次咯。
为啥基本每个高级语言都会有goto,因为底层的构建高手都会用到点goto.
return:我就不明白了,你们敢在循环里直接用return?这个循环体后面的事情不做了?用return,整个方法就结束了!!
使用标志才是最正确的方法!!
参考6楼。
如果像你所说微软又何必多此一举,在.NET框架中还要对它的支持呢!
程序的可读性固然重要,但该用的时候还是要用的......