所以,我对这段代码感到困惑:
import java.util.InputMismatchException;
import java.util.Scanner;
public class ConsoleReader {
Scanner reader;
public ConsoleReader() {
reader = new Scanner(System.in);
//reader.useDelimiter(System.getProperty("line.separator"));
}
public int readInt(String msg) {
int num = 0;
boolean loop = true;
while (loop) {
try {
System.out.println(msg);
num = reader.nextInt();
loop = false;
} catch (InputMismatchException e) {
System.out.println("Invalid value!");
}
}
return num;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
插入整数:
无效的值!
插入整数:
无效的值!
...
我有以下循环:
for (byte i = 0 ; i < 128; i++) {
System.out.println(i + 1 + " " + name);
}
Run Code Online (Sandbox Code Playgroud)
当我执行我的程序时,它会在无限循环中打印-128到127之间的所有数字.为什么会这样?
我目前有代码基本上运行无限循环来从用户收集数据.根据文本文件的内容不断更新字典/列表.以供参考:
while (True):
IDs2=UpdatePoints(value,IDs2)
time.sleep(10)
Run Code Online (Sandbox Code Playgroud)
基本上,我的问题是我不知道什么时候我希望它结束,但在此循环运行之后我想使用收集的信息,而不是因为崩溃我的程序而丢失它.是否有一种简单,优雅的方式可以随时退出while循环?像按键盘上的某个按键会很棒.
可以优化编译器删除无限循环,这不会改变任何数据,如
while(1)
/* noop */;
Run Code Online (Sandbox Code Playgroud)
从分析编译器可以推导出的数据流图,这样的循环是"死代码"而没有任何副作用.
是否删除了C90/C99标准禁止的无限循环?
C90或C99标准是否允许编译器删除此类循环?
更新:"Microsoft C版本6.0基本上做了这个优化.",请参阅caf的链接.
label: goto label;
return 0;
Run Code Online (Sandbox Code Playgroud)
将转变为
return 0;
Run Code Online (Sandbox Code Playgroud) c compiler-construction optimization standards infinite-loop
我想在JavaScript中创建一个无限循环.
有什么方法可以实现这个目标:
例如
for (var i=0; i<Infinity; i++) {}
Run Code Online (Sandbox Code Playgroud) 我最近开始尝试使用Python进行Web开发.到目前为止,我已经使用Apache与mod_wsgi和用于Python 2.7的Django Web框架取得了一些成功.但是,我遇到了一些问题,即流程不断运行,更新信息等等.
我编写了一个脚本,我称之为"daemonManager.py",可以启动和停止所有或单个python更新循环(我应该称之为守护进程吗?).它通过分叉,然后为应该运行的特定函数加载模块并启动无限循环来实现.它会保存PID文件/var/run以跟踪进程.到现在为止还挺好.我遇到的问题是:
偶尔会有一个进程退出.我ps早上检查,过程刚刚结束.没有记录错误(我正在使用该logging模块),我正在报道我能想到的每个异常并记录它们.此外,我不认为这些退出过程与我的代码有任何关系,因为我的所有进程都运行完全不同的代码并以非常相似的间隔退出.我当然错了.Python进程在运行数天/数周后死亡是否正常?我该如何解决这个问题?我应该编写另一个守护进程来定期检查其他守护进程是否仍在运行吗?如果守护进程停止怎么办?我对如何处理这个问题感到很茫然.
如何以编程方式知道进程是否仍在运行?我正在保存PID文件/var/run并检查PID文件是否在那里以确定进程是否正在运行.但是如果进程刚刚因意外原因而死,则PID文件将保留.因此,每次进程崩溃(每周几次)时,我都必须删除这些文件,这会破坏目的.我想我可以检查一个进程是否正在文件中的PID上运行,但如果另一个进程已启动并被分配了死进程的PID怎么办?我的守护进程会认为这个进程运行正常,即使它已经很久了.我再次对如何应对这种情况感到茫然.
关于如何最好地运行无限Python进程的任何有用的答案,希望也能解释上述问题,我会接受
我在Ubuntu机器上使用Apache 2.2.14.
我的Python版本是2.7.2
是否有可能做到这一点?(这是我的代码)
for ($i = 0 ; $i <= 10 ; $i++){
for ($j = 10 ; $j >= 0 ; $j--){
echo "Var " . $i . " is " . $k . "<br>";
}
}
Run Code Online (Sandbox Code Playgroud)
我想要这样的东西:
var 0是10
var 1是9
var 2是8 ...
但是我的代码错了,它提供了一个巨大的列表.Php大师,帮帮我!!
可能重复:
"for(;;)"是否比"while(TRUE)"快?如果没有,为什么人们会使用它?
for(;;)或while(true) - 哪个是正确的C#无限循环?
while(true)(或while(1))和for(;;)?之间有任何明显的区别吗?有没有理由选择一个而不是另一个?
"无限"IEnumerable的一个简单例子
IEnumerable<int> Numbers() {
int i=0;
while(true) {
yield return unchecked(i++);
}
}
Run Code Online (Sandbox Code Playgroud)
我知道
foreach(int i in Numbers().Take(10)) {
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
和
var q = Numbers();
foreach(int i in q.Take(10)) {
Console.WriteLine(i);
}
Run Code Online (Sandbox Code Playgroud)
两者都工作正常(并打印数字0-9).
但复制或处理表达式时是否有任何陷阱q?我可以依赖这样一个事实,即它们总是被评估为"懒惰"吗?产生无限循环有危险吗?
在C++ 11中,它是未定义的行为,但在C中的情况while(1);是未定义的行为吗?
infinite-loop ×10
c ×2
for-loop ×2
java ×2
python ×2
apache ×1
byte ×1
c# ×1
c++ ×1
daemon ×1
enumeration ×1
javascript ×1
loops ×1
optimization ×1
php ×1
standards ×1
types ×1
while-loop ×1
yield-return ×1