我无法弄清楚如何打破包含switch语句的循环.断开了开关,而不是循环.
对此可能有更优雅的解决方案.我已经实现了一个标志,该标志以true开头并设置为false并结束循环.你能提供更好的解决方案吗?
背景:此代码用于条形码工作流程系统.我们有内置条形码扫描仪的PocketPC.此代码用于其中一个功能.它会在整个例程中提示用户输入不同的数据.这件作品允许他们滚动显示在PocketPC终端上显示该信息的一些库存记录(分页结果)并允许他们输入"D"表示完成,"Q"表示退出.
这是当前需要改进的C#示例:
do
{
switch (MLTWatcherTCPIP.Get().ToUpper())
{
case "": //scroll/display next inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "P": //scroll/display previous inventory location
MLTWatcherTCPIP.TerminalPrompt.ScrollBodyTextDown();
break;
case "D": //DONE (exit out of this Do Loop)
// break; // this breaks out of the switch, not the loop
// return; // this exists entire method; not what I'm after
keepOnLooping = false;
break;
case "Q": //QUIT (exit out to main menu)
return;
default:
break;
}
} while (keepOnLooping);
Run Code Online (Sandbox Code Playgroud)
这是在VB.NET中执行此操作的代码示例
Do
Select Case …
Run Code Online (Sandbox Code Playgroud) 我有一个功课来实现一个简单的测试应用程序,下面是我目前的代码:
import java.util.*;
public class Test{
private static int typing;
public static void main(String argv[]){
Scanner sc = new Scanner(System.in);
System.out.println("Testing starts");
while(sc.hasNextInt()){
typing = sc.nextInt();
switch(typing){
case 0:
break; //Here I want to break the while loop
case 1:
System.out.println("You choosed 1");
break;
case 2:
System.out.println("You choosed 2");
break;
default:
System.out.println("No such choice");
}
}
System.out.println("Test is done");
}
}
Run Code Online (Sandbox Code Playgroud)
我现在要做的是,当0
按下时,表示用户想要退出测试,然后我打破while loop
并打印Test is done
,但它不能那样工作,我知道原因可能是"break"
打破了switch
,我怎么能让它打破while loop
呢?
有人可以通过示例解释循环break 2
或continue 2
PHP中的含义吗?数字何时break
或continue
后面是什么意思?
在做了一些关于如何突破二次循环的研究之后
while (true) { // Main Loop
for (int I = 0; I < 15; I++) { // Secondary loop
// Do Something
break; // Break main loop?
}
}
Run Code Online (Sandbox Code Playgroud)
大多数人建议调用'goto'函数
看如下例:
while (true) { // Main Loop
for (int I = 0; I < 15; I++) { // Secondary Loop
// Do Something
goto ContinueOn; // Breaks the main loop
}
}
ContinueOn:
Run Code Online (Sandbox Code Playgroud)
然而; 我经常听说'goto'声明是不好的做法.下图完美地说明了我的观点:
鉴于这种方法,这是否代表了一些令人震惊的风格或语义失误:
private double translateSlider(int sliderVal) {
switch (sliderVal) {
case 0:
return 1.0;
case 1:
return .9;
case 2:
return .8;
case 3:
return .7;
case 4:
return .6;
default:
return 1.0;
}
}
Run Code Online (Sandbox Code Playgroud)
这显然不符合这里的Java教程.
然而,它清晰,简洁,到目前为止已经完全符合我的需要.是否有令人信服的实用理由创建局部变量,在每种情况下为其赋值,为每个案例添加一个中断并在方法结束时返回值?
Visual Studio 2017在调试模式下中断并显示消息:
您的应用程序已进入中断状态,但没有要显示的代码,因为所有线程都在执行外部代码(通常是系统或框架代码).
消息在Break Mode Window
.
该怎么办?
我在线获得了一个函数来帮助我完成当前的项目,它在某些行上有分号.我想知道为什么?是打破这个功能吗?
def containsAny(self, strings=[]):
alphabet = 'abcdefghijklmnopqrstuvwxyz0123456789'
for string in strings:
for char in string:
if char in alphabet: return 1;
return 0;
Run Code Online (Sandbox Code Playgroud)
我上网的功能很少修改:
for string in strings:
for char in string:
if char in alphabet: return 1;
Run Code Online (Sandbox Code Playgroud)
这是^说以下?
if char in alphabet:
return 1
break
Run Code Online (Sandbox Code Playgroud) 在科特林,我不能做一个break
或continue
一个功能回路和我的拉姆达内-就像我可以从一个正常的for
循环.例如,这不起作用:
(1..5).forEach {
continue@forEach // not allowed, nor break@forEach
}
Run Code Online (Sandbox Code Playgroud)
有旧的文档提到这个可用,但它似乎从未实现过.当我想要continue
或break
来自lambda 时,获得相同行为的最佳方法是什么?
注意: 这个问题是由作者故意编写和回答的(自答案问题),因此对于常见问题的Kotlin主题的惯用答案存在于SO中.还要澄清为Kotlin的alphas写的一些非常古老的答案,这些答案对于当前的Kotlin来说是不准确的.
我刚刚发现在JavaScript中使用标签,例如:
for (var i in team) {
if(i === "something") {
break doThis: //Goto the label
} else {
doThat();
}
}
doThis: //Label
doIt();
Run Code Online (Sandbox Code Playgroud)
直到现在我还没有听说过这个,我在网上找不到太多关于它的信息,我开始认为这是有原因的.
在我看来,这类似于GOTO
其他语言的陈述,并将被视为不良做法.假设这个我是对的吗?
我已经使用Java很长一段时间了,但我的循环教育有点缺乏.我知道如何创建java中存在的每个循环,并打破循环.但是,我最近想过这个:
假设我有两个嵌套循环.我可以只使用一个
break
语句来打破两个循环吗?
这是我到目前为止所拥有的.
int points = 0;
int goal = 100;
while (goal <= 100) {
for (int i = 0; i < goal; i++) {
if (points > 50) {
break; // For loop ends, but the while loop does not
}
// I know I could put a 'break' statement here and end
// the while loop, but I want to do it using just
// one 'break' statement.
points += i;
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
break ×10
loops ×5
java ×3
c# ×2
continue ×2
nested-loops ×2
while-loop ×2
breakpoints ×1
case ×1
function ×1
goto ×1
if-statement ×1
javascript ×1
kotlin ×1
label ×1
php ×1
python ×1
return ×1