标签: while-loop

Java:for(;;)vs. while(true)

标准while(true)循环和for(;;)?之间有什么区别?

编译后是否存在或将两者都映射到相同的字节码?

java for-loop while-loop

60
推荐指数
4
解决办法
2万
查看次数

在Python中使用While循环分配?

我刚看到这段代码

while 1:
    line = data.readline()
    if not line:
        break
    #...
Run Code Online (Sandbox Code Playgroud)

并且认为,必须有一个更好的方法来做到这一点,而不是使用无限循环break.

所以我尝试过:

while line = data.readline():
    #...
Run Code Online (Sandbox Code Playgroud)

并且,显然,有一个错误.

有没有办法避免break在那种情况下使用?

编辑:

理想情况下,你想避免说readline两次......恕我直言,重复甚至比仅仅更糟糕break,特别是如果声明很复杂.

python variable-assignment while-loop

59
推荐指数
7
解决办法
6万
查看次数

是(真的)与破坏不良的编程实践?

我经常使用这个代码模式:

while(true) {

    //do something

    if(<some condition>) {
        break;
    }

}   
Run Code Online (Sandbox Code Playgroud)

另一位程序员告诉我,这是不好的做法,我应该用更标准的替换它:

while(!<some condition>) {

    //do something

}   
Run Code Online (Sandbox Code Playgroud)

他的理由是你可以"轻易地忘记休息"并拥有无限循环.我告诉他,在第二个例子中你可以很容易地放入一个永远不会返回真实的条件,因此很容易有一个无限循环,所以两者都是同样有效的做法.

此外,我经常更喜欢前者,因为当你有多个断点时,即当多个条件退出循环时,它使代码更容易阅读.

任何人都可以通过为一方或另一方添加证据来丰富这一论点吗?

readability while-loop

55
推荐指数
7
解决办法
7万
查看次数

在嵌套的while循环中继续

在这个代码示例中,有没有办法从catch块继续外部循环?

while
{
   // outer loop

   while
   {
       // inner loop
       try
       {
           throw;
       }
       catch 
       {
           // how do I continue on the outer loop from here?
           continue;
       }
   }
}
Run Code Online (Sandbox Code Playgroud)

c# loops continue while-loop

55
推荐指数
5
解决办法
5万
查看次数

输出-1在循环中变为斜线

令人惊讶的是,以下代码输出:

/
-1
Run Code Online (Sandbox Code Playgroud)

代码:

public class LoopOutPut {

    public static void main(String[] args) {
        LoopOutPut loopOutPut = new LoopOutPut();
        for (int i = 0; i < 30000; i++) {
            loopOutPut.test();
        }

    }

    public void test() {
        int i = 8;
        while ((i -= 3) > 0) ;
        String value = i + "";
        if (!value.equals("-1")) {
            System.out.println(value);
            System.out.println(i);
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我尝试了很多次以确定这种情况会发生多少次,但是不幸的是,最终还是不确定的,并且我发现-2的输出有时变成了一个周期。另外,我还尝试了删除while循环并输出-1,而没有任何问题。谁能告诉我为什么?


JDK版本信息:

public class LoopOutPut {

    public static void main(String[] args) {
        LoopOutPut loopOutPut = new LoopOutPut();
        for (int …
Run Code Online (Sandbox Code Playgroud)

java string jit jvm while-loop

55
推荐指数
1
解决办法
1622
查看次数

打破包含switch语句的while循环

我无法弄清楚如何打破包含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)

c# break while-loop

54
推荐指数
7
解决办法
5万
查看次数

Java如何在switch语句下打破while循环?

我有一个功课来实现一个简单的测试应用程序,下面是我目前的代码:

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呢?

java break while-loop

54
推荐指数
3
解决办法
4万
查看次数

while的目的(1); C中的陈述

有什么用途while(1);?我知道while(1)(没有分号)无限循环,类似于自旋锁情况.但是我没看到哪里while(1);可以使用?

示例代码

if(!condition)
{ 
  while(1);
}
Run Code Online (Sandbox Code Playgroud)

注意:这不是do- while()或简单的情况while(1).

c while-loop

54
推荐指数
6
解决办法
4万
查看次数

有没有一种方法可以缩短这种情况?

while (temp->left->oper == '+' || 
       temp->left->oper == '-' || 
       temp->left->oper == '*' || 
       temp->left->oper == '/' || 
       temp->right->oper == '+' || 
       temp->right->oper == '-' || 
       temp->right->oper == '*' || 
       temp->right->oper == '/')
{
    // do something
}
Run Code Online (Sandbox Code Playgroud)

为了清楚起见:temp是一个指向以下node结构的指针:

struct node
{
    int num;
    char oper;
    node* left;
    node* right;
};
Run Code Online (Sandbox Code Playgroud)

c++ algorithm if-statement while-loop simplify

50
推荐指数
6
解决办法
6566
查看次数

你如何在Ruby中循环多线字符串?

来自第一次Ruby程序员的非常简单的问题.

你如何在Ruby中循环一段文本?每当遇到换行符时,我想重新启动内循环.

def parse(input)
    ...
end
Run Code Online (Sandbox Code Playgroud)

ruby string loops while-loop

49
推荐指数
2
解决办法
3万
查看次数