如果您有for循环:
for(i=0;i<10;i++){}
现在,在i==5
时,如何在不使用break
,return
或if
的情况下完全退出for循环?
答案 0 :(得分:3)
我能想出的最好的是:
for (int i = 0; i < 10; i++)
{
i = (i == 5) ? 10 : i;
Trace.WriteLine("i = " + i.ToString());
}
...这将导致循环运行六次(i = 0..5)并显示此..
i = 0
i = 1
i = 2
i = 3
i = 4
i = 10
退出循环的另一种方式&#34; (以一种特别讨厌的方式)就是这样做......
for (int i = 0; i < 10; i++)
{
int a = 3 / ((i == 5) ? 0 : 1);
Trace.WriteLine("i = " + i.ToString());
}
..崩溃,错误,成功退出循环而不使用break
,return
或if
命令。
i = 0
i = 1
i = 2
i = 3
i = 4
A first chance exception of type 'System.DivideByZeroException' occurred in MikesProgram.dll
语言是C#。实际上是一个面试问题......好奇
我能得到这份工作吗?
我需要检查你的健康状况&amp;牙科计划,我必须在星期四早些时候离开,从学校收集我的女儿。
- )
答案 1 :(得分:1)
for (int n = 0; n < 10; n++)
{
n += (n / 5) * 5;
}
答案 2 :(得分:1)
以下是另一种方法,如果您想在不使用// pixel data copied to WriteableBitmap then saved by JpegBitmapEncoder
var reader = new gdcm.ImageReader();
var gimg = reader.GetImage();
WriteableBitmap wb = new WriteableBitmap((int)cols, (int)rows, 120, 120, PixelFormats.Gray16, null);
wb.Lock();
Marshal.Copy(buff, 0, wb.BackBuffer, buff.Length);
wb.Unlock();
using (var ms2 = new MemoryStream())
{
JpegBitmapEncoder enc = new JpegBitmapEncoder();
enc.QualityLevel = 95;
enc.Frames.Add(BitmapFrame.Create(wb));
enc.Save(ms2);
jpegfile = ms2.GetBuffer();
}
,i = 5
或break
return
时确切地中断处理
if
答案 3 :(得分:0)
for(i=0;i<10;i++){
(i==5) ? goto Outer : //do something;
}
Outer:
//do something
答案 4 :(得分:0)
问题是循环应该在i = 5时结束,它没有说开始,所以这应该是有效的(三元运算符解决方案更好,但如果我们不允许使用任何条件运算符)
for (int i = 0; i < 10; i++)
{
i=i-4;
Console.WriteLine("i = " + i.ToString());
i=i+4;
}
这从-4开始到5结束。
答案 5 :(得分:0)
当然,真正的答案如下:
public static boolean isSimSupport(Context context)
{
TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //gets the current TelephonyManager
return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT);
}
但是让它变得更通用:停止if(表达式)变为真。
for循环的第二个参数是一个布尔表达式,它决定是否继续使用下一个元素循环。
因此,如果您因任何条件而想停止循环:
for (i=0; i!=5; i++)
{
// do something
}
答案 6 :(得分:0)
这可以使用while
和goto
:
for (int i = 0; i < 10; i++)
{
while (i < 5)
{
Console.Write(i + " ");
goto OutsideWhile;
}
OutsideWhile:
continue;
}
// 0 1 2 3 4