标签: do-while

do-while循环使用continue,在Java中使用和不使用标签

让我们看看以下do-while循环.这很明显,毫无疑问.

do
{
    System.out.println("Hello world");
    break;
} while(false);
Run Code Online (Sandbox Code Playgroud)

这很明显,只需在控制台上显示字符串Hello world并退出.


现在,以下版本do-while似乎陷入无限循环,但事实并非如此.它还在控制台上显示字符串Hello world并以静默方式退出.

do
{
    System.out.println("Hello world");
    continue;
} while(false);
Run Code Online (Sandbox Code Playgroud)

让我们看看另一个do-while带有标签的版本,如下所示.

label:do
{
    System.out.println("Hello world");
    continue label;
} while(false);
Run Code Online (Sandbox Code Playgroud)

它也会在控制台上显示消息Hello world并退出.它不是一个无限循环,因为它似乎意味着这个场景中的所有版本都相同的方式工作.怎么样?

java do-while

5
推荐指数
1
解决办法
3050
查看次数

Pythonic do-while循环

尽管python并未明确允许do-while循环,但至少有3种合理的方式来实现它们:

1)

while True:
    #loop body
    if not expr():
        break
Run Code Online (Sandbox Code Playgroud)

2)

x = True
while x:
    #loop body
    x = expr()
Run Code Online (Sandbox Code Playgroud)

3)

def f():
    #loop body

f()
while expr():
    f()
Run Code Online (Sandbox Code Playgroud)

更不用说这里提到的其他方法(例如协程,try-except子句,迭代器等),我认为它们在大多数情况下都是非Python的。我什至看到一些答案争辩说do-while循环不是Python的,但我不知道通用的替代方法。

哪种方法最适合pythonic?它们都有其独特之处:1)以无限循环开始,2)首先创建一个不透明变量,3)定义一个新函数。有谁有更好的方法?

python do-while

5
推荐指数
0
解决办法
2334
查看次数

C++做while循环

我有一个包含10个项目的向量(为简单起见所有相同的类称为'a').我想要做的是检查'A'不是a)隐藏墙壁或b)隐藏另一个'A'.我有一个碰撞功能,可以做到这一点.

这个想法只是让这个循环类通过并将'A'移动到下一个位置,如果该药水引起碰撞,那么它需要在屏幕上给自己一个新的随机位置.由于屏幕较小,因此很有可能将元素放在另一个(或墙顶等)上.代码的逻辑在我的脑海中运行良好 - 但调试代码时对象只是卡在循环中,并保持在相同的位置.'A'应该在屏幕上移动,但它保持静止!

当我注释掉Do while循环,并移动'MoveObject()'函数时,代码完美地运行'A'正在屏幕上移动.只是当我尝试添加额外的功能时它就不起作用了.

    void Board::Loop(void){


        //Display the postion of that Element. 
        for (unsigned int i = 0; i <= 10; ++i){


            do {

                if (checkCollisions(i)==true){
                moveObject(i); 
                }
                else{
                    objects[i]->ResetPostion();

                }

            }
            while (checkCollisions(i) == false);
            objects[i]->SetPosition(objects[i]->getXDir(),objects[i]->getYDir());
        }

}
Run Code Online (Sandbox Code Playgroud)

下面的类是碰撞检测.我稍后会扩展.

    bool Board::checkCollisions(int index){

    char boundry = map[objects[index]->getXDir()][objects[index]->getYDir()];

    //There has been no collisions - therefore don't change anything 
    if(boundry == SYMBOL_EMPTY){
        return false;
    }
    else{
        return true;

    }

}
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.我会给你买一个虚拟啤酒:-)

谢谢

编辑:

ResetPostion - >这将使元素A在屏幕上的随机位置moveObject - >这将查看对象的方向并适当调整x和Y线.

c++ while-loop do-while

5
推荐指数
1
解决办法
5826
查看次数

同时和比较

这样做,虽然:

do
{ 
    i++; 
    ++j;
    System.out.println( i * j );

}
while ((i < 10) && (j*j != 25));
Run Code Online (Sandbox Code Playgroud)

我现在正在学习do-while vs,并希望使用while重写上面的java片段(已经声明和初始化).以下重写代码是否正确:

而:

while ((i < 10) && (j*j != 25))
{
    i++;  
    ++j;
    System.out.println( i * j );
}
Run Code Online (Sandbox Code Playgroud)

干杯

java loops while-loop do-while

5
推荐指数
1
解决办法
8142
查看次数

Java:Do-While循环中的Try-Catch语句

我正在尝试执行一些扫描用户输入值的代码.这个动作包含在我写的自定义方法中,名为getTriangleDim(); 该方法读入users int值,确保它在某个范围内,然后返回输入的int值.该方法效果很好,我没有任何问题.

当我为getTriangleDim()方法输入非int值时出现问题.它给我一个InputMismatchException错误.我已经在do-while循环中编写了一个try-catch语句来尝试修复此问题.但这是我第一次使用try-catch语句,而我显然错过了一些东西.

以下是嵌套在do-while循环中的try-catch语句的代码:

//loop to scan for triangle dimension
        boolean bError = true;
        int triangle;

        do{
            try {
                triangle = getTriangleDim();
                bError=false;
                }
            catch (Exception e){
                System.out.println("You did not enter an integer, please enter an integer value");
                triangle = getTriangleDim();

                }
        }while (bError);
Run Code Online (Sandbox Code Playgroud)

如果我通过输入一个char值代替int来测试它,它实际捕获错误一次,然后打印我的"你没有....."语句.但是,如果我重新输入另一个非int数字,我再次得到一个运行时错误,说.......你猜对了........ InputMismatchException错误.

我的方法的代码在这里:

//method for scanning triangle dimensions from keyboard
    public static int getTriangleDim(){
        int triangle = 0;
        Scanner keyboard = new Scanner(System.in);
        do{
        System.out.print("Enter a non-zero integer length (+/-1 - +/-16): ");
        triangle = …
Run Code Online (Sandbox Code Playgroud)

java exception-handling try-catch do-while inputmismatchexception

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

用逗号运算符做{} while(,)是否可能?

昨天我读了关于for循环的Java中的逗号运算符.这符合我的预期.我想到了这种结构,但它没有按预期工作.

';' expected
        } while((userInput < 1 || userInput > 3), wrongInput = true);

';' expected
        } while((userInput < 1 || userInput > 3), wrongInput = true);
Run Code Online (Sandbox Code Playgroud)

我的想法是,在一次迭代后,如果userInput不在1和3之间,它应该设置布尔值wrongInput,true以便在下一次迭代期间显示错误消息.表明该内容userInput无效.

private int askUserToSelectDifficulty() {
    int userInput;
    Boolean wrongInput = false;

    do{
        if(wrongInput) println("\n\t Wrong input: possible selection 1, 2 or 3");
        userInput = readInt();
    } while((userInput < 1 || userInput > 3), wrongInput = true);

    return userInput;
}
Run Code Online (Sandbox Code Playgroud)

我想这也许是因为它在for循环的等效部分内部,这是无效的语法.因为您不能在条件部分中使用逗号运算符?

我看到在for循环中使用逗号运算符的示例:在Java Java 中为for循环提供多个条件- …

java comma while-loop conditional-statements do-while

5
推荐指数
1
解决办法
747
查看次数

使用cout语句执行while循环

所以我对do/ whileloop 有一个普遍的问题.我正在学习C++,我知道你可以这样写:

do{
....
} while(a<10 && cout<<"message");
Run Code Online (Sandbox Code Playgroud)

关键是,我知道这在c ++中是可行的,但我们真的这样做吗?我的意思是," 内部cout东西" ?

c++ do-while

5
推荐指数
2
解决办法
2313
查看次数

do ... while()重复最后一个字符串两次

以下代码将提供的字符串/行拆分为字符.为什么循环重复最后一次字符串两次?怎么解决?

#include <iostream>
#include <vector>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string main, sub;
    cout << "Enter string: ";
    getline(cin, main);
    istringstream iss(main);
    do
    {
        iss >> sub;
        cout << sub << endl;
        vector<char> v(sub.begin(), sub.end());
        for(int i = 0; i < v.size(); i++)
         {
             cout << v[i] << endl;
         }
    } while (iss);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输入:

你好,世界

期望的输出

你好
^ h
è


Ø
世界
w ^
ō
[R

d

实际产量:

你好 …

c++ do-while istringstream

5
推荐指数
1
解决办法
298
查看次数

寻找更优雅的DO WHILE解决方案

所以我有一些以do while循环为中心的代码.

string token;
var count = 0;      
var checkDataLength= data.Length == 16;

do
{              
    count = 0;
    token = GenerateToken(data, start, end);

    if (checkDataLength)
    {
        if (Mod120Check(token))
        {                      
            count += 1;
        }
    }

    if (IsCompliant(token))
    {
        count += 1;
    }
} 
while (count > 0);

return token;
Run Code Online (Sandbox Code Playgroud)

基本上,我正在生成一个令牌,并且为了使此令牌有效,必须将Mod120Check和IsCompliant检查失败.我无法改变这些方法返回数据的方式.

虽然上面的代码有效,但我觉得它很难看,我想知道是否有人有更好的方法吗?

谢谢

c# do-while

5
推荐指数
1
解决办法
176
查看次数

循环10次添加输入,在C#中使用for和do while循环?

我是一名基础C#课程的新手,我在完成工作任务时遇到了麻烦.我建了一个基本的计算器,它工作正常.现在我必须添加一个名为"Sum"的新按钮,它将从我的一个盒子(number1Txtbox)中获取输入,并通过循环将其添加到自身10次.

我倒了我的c#书的页面,无法想出这个.我想出了如何使用计数器等初始化循环,我只是无法让它在我的生活中工作.

有人告诉我使用for循环,然后切换到do while循环.这对我来说没有多大意义,我以为我可以用for循环来做到这一点.所以我的问题是:

1)我甚至需要切换到do while循环才能执行此操作吗?
2)我做错了什么?

这是我到目前为止所做的,当我在文本框中输入一个数字后尝试点击总和按钮时,它只会使我的程序冻结:

private void sumBtn_Click(object sender, EventArgs e)
{
    int counter;
    int loopAnswer;
    int number1;

    number1 = int.Parse(number1Txtbox.Text);

    for (counter = 1; counter <= 10; counter++)
    {
        loopAnswer = number1 + number1;
        do
        {
            loopAnswer = loopAnswer + number1;
        } while (counter <= 10);

        equalsBox.Text = loopAnswer.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

多谢你们!

c# for-loop do-while

4
推荐指数
1
解决办法
9763
查看次数