鉴于Groovy没有do-while语句,我如何迭代输入流中的所有字节?
目前还没有'do ... while()'语法.
由于含糊不清,我们还没有增加对Groovy的支持
在Groovy中执行以下Java代码的最佳方法是什么?
def numRead = inputStream.read(fileBytes, 0, fileBytes.length);
do{
} while(numRead > 0);
Run Code Online (Sandbox Code Playgroud)
(我知道我可以使用布尔值来做到这一点,我只想知道是否有"Groovy"方式)
我是编码的新手,我正在尝试do while使用嵌套if语句进行长循环,但是我遇到了让循环实际循环的问题.
我没有直接获得有关代码很长的项目的帮助,而是制作了一个简单的版本.它也不循环.它将结束并询问用户是否要再次尝试但是当输入"y"时它忽略if语句.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string sodaChoice;
char answer = 'n';
do
{
cout << "Please choose your favorite soda from the following: Rootbeer, Diet Coke, Coke, Sprite" << "\n";
getline(cin, sodaChoice);
if (sodaChoice == "Rootbeer")
{
cout << "Me too!" << "\n";
}
else if (sodaChoice == "Diet")
{
cout << "Not me :(" << "\n";
}
else if (sodaChoice == "Coke")
{
cout << "It's alright" …Run Code Online (Sandbox Code Playgroud) 我写的是这样的代码:
do {
int i = 0;
int j = i * 2;
cout<<j;
i++;
} while (j < 100);
Run Code Online (Sandbox Code Playgroud)
当我的编译器告诉我我不能使用变量'j'时,我感到很惊讶,因为它没有在do-while循环之外声明.
我很好奇是否有任何技术原因导致这种情况无法实现.
当您使用
continue无标签,它会终止最内层的当前迭代while,do-while或for语句,并继续与下一个迭代循环的执行.
我不确定为什么下面的代码不能像我期望的那样工作.
do {
continue;
} while(false);
Run Code Online (Sandbox Code Playgroud)
即使while条件是false,我希望它会永远运行,因为continue跳转到块的开始,它会立即continue再次执行,等等.然而,不管怎样,循环在一次迭代后终止.看起来好像continue被忽略了.
如何continue在一个do-while循环的工作?
我正在比较Java中嵌套for,while和do-while循环的效率,并且我遇到了一些我需要帮助理解的奇怪结果.
public class Loops {
public static void main(String[] args) {
int L = 100000; // number of iterations per loop
// for loop
double start = System.currentTimeMillis();
long s1 = 0;
for (int i=0; i < L; i++) {
for (int j = 0; j < L; j++) {
s1 += 1;
}
}
double end = System.currentTimeMillis();
String result1 = String.format("for loop: %.5f", (end-start) / 1000);
System.out.println(s1);
System.out.println(result1);
// do-while loop
double start1 = System.currentTimeMillis();
int i = …Run Code Online (Sandbox Code Playgroud) 我永远不明白为什么使用do while循环是必要的.我理解他们做了什么,这是执行while循环包含的代码而不检查条件是否为真.
但不是以下代码:
do{
document.write("ok");
}
while(x == "10");
Run Code Online (Sandbox Code Playgroud)
完全相同:
document.write("ok");
while(x == "10"){
document.write("ok");
}
Run Code Online (Sandbox Code Playgroud)
也许我是非常愚蠢的,并且遗漏了一些显而易见的东西,但是我没有看到在我上面的例子中使用do的好处.
很多时候在C程序的例子中,我遇到过这种循环.这些循环真正做了什么?
do {
while (...) // Check some condition if it is true.
{
calculation 1
}
// Some new condition is checked.
} while(true);
Run Code Online (Sandbox Code Playgroud)
有什么需要while(true);用于无限循环?有人可以解释上面的循环真正做了什么.我是C编程的新手
我总是有问题放在;最后while或不放在do while循环结束.那是什么原因?为什么
int numItemsToProcess = 3;
while(numItemsToProcess > 0)
{
// process an item
numItemsToProcess--;
}
Run Code Online (Sandbox Code Playgroud)
;最后不需要但是
do
{
numItemsToProcess --;
} while (numItemsToProcess > 0);
Run Code Online (Sandbox Code Playgroud)
呢?也许原因并不太重要.但是当你知道你能记住放在哪里的原因时;.
当代码流是这样的:
if(check())
{
...
...
if(check())
{
...
...
if(check())
{
...
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我一般都看到这个工作,以避免这个混乱的代码流:
do {
if(!check()) break;
...
...
if(!check()) break;
...
...
if(!check()) break;
...
...
} while(false);
Run Code Online (Sandbox Code Playgroud)
有哪些更好的方法可以避免这种变通/破解,从而使其成为更高级别(行业级别)的代码?
是否有可能来自Apache commons或Google Guava的构造?
注意:这是C++相同问题的副本.最好的答案是真正的函数指针和GOTO命令.两者都不存在于Java中.我对Java的同样兴趣很感兴趣.
将它放入一个新函数并使用return在我看来不是一个好的解决方案,因为return退出了该方法.因此,如果我的类有20个方法使用这些结构,我将不得不添加20个额外的方法来完成这个.这就是为什么GOTO是C++的最佳答案.
do-while ×10
loops ×4
c++ ×3
while-loop ×3
c ×2
java ×2
continue ×1
for-loop ×1
groovy ×1
if-statement ×1
iteration ×1
javascript ×1
matlab ×1
performance ×1