我正在编写一个脚本来记录来自另一个程序的错误,并在遇到错误时重新启动它停止的程序.无论出于何种原因,该程序的开发人员都认为没有必要在默认情况下将此功能放入其程序中.
无论如何,程序接受一个输入文件,解析它,并创建一个输出文件.输入文件采用特定格式:
UI - 26474845
TI - the title (can be any number of lines)
AB - the abstract (can also be any number of lines)
Run Code Online (Sandbox Code Playgroud)
当程序抛出错误时,它会为您提供跟踪错误所需的参考信息 - 即UI,哪个部分(标题或摘要)以及相对于标题或摘要开头的行号.我想从输入文件中记录有问题的句子,其中包含一个带参考号和文件的函数,找到句子并记录它.我能想到的最好的方法是在文件中向前移动特定次数(即n次,其中n是相对于seciton开头的行号).这样做的方式似乎是:
i = 1
while i <= lineNumber:
print original.readline()
i += 1
Run Code Online (Sandbox Code Playgroud)
我不知道这会如何让我丢失数据,但Python认为它会,并说ValueError: Mixing iteration and read methods would lose data.有谁知道如何正确地做到这一点?
我只是好奇人们对这个话题的看法.假设我有一个对象数组,我想循环遍历它们以查看对象是否包含某些值,如果是,我想停止循环.哪种更好的做法 - 带有中断的for循环或条件循环?
我提供的示例中的伪代码仅用于参数(它也在ActionScript中,因为这是我最近的主要语言).另外,我不是在寻找关于语法的最佳实践想法.
for break循环:
var i:int;
var isBaxterInMilwaukee:Boolean;
for (i = 0; i < arrayLen; i++)
{
if (myArray[i]["name"] == "baxter"
&& myArray[i]["location"] == "milwaukee")
{
isBaxterInMilwaukee = true;
barkTwice();
break;
}
}
Run Code Online (Sandbox Code Playgroud)
条件循环:
var i:int;
var isBaxterInMilwaukee:Boolean;
while (!isBaxterInMilwaukee && i < arrayLen)
{
if (myArray[i]["name"] == "baxter"
&& myArray[i]["location"] == "milwaukee")
{
isBaxterInMilwaukee = true;
barkTwice();
}
i++;
}
Run Code Online (Sandbox Code Playgroud) 我们可以像while(condition);C编程一样放分号吗?如果while(condition);有效,这是什么意思?
今天有人告诉我return在Java中使用关键字.我编写了一个简单的for循环来验证数组中的某些东西.假设array是一个长度为n的数组,这是我的代码:
for (int i = 0; i < array.length; ++i) {
if (array[i] == valueToFind) {
return true;
}
}
return false;
Run Code Online (Sandbox Code Playgroud)
现在有人告诉我这不是很好的编程,因为我n在循环中使用语句,这会导致垃圾收集失灵.因此,更好的代码将是:
int i = 0;
while (i < array.length && array[i] != valueToFind) {
++i;
}
return i != array.length;
Run Code Online (Sandbox Code Playgroud)
问题是我无法正确地阐述为什么第一个for循环不是一个好习惯.有人可以给我一笔费用吗?
给出以下代码示例:
public class WeirdStuff {
public static int doSomething() {
while(true);
}
public static void main(String[] args) {
doSomething();
}
}
Run Code Online (Sandbox Code Playgroud)
这是一个有效的Java程序,虽然方法doSomething()应该返回一个int但从来没有.如果你运行它,它将以无限循环结束.如果将while循环的参数放在一个单独的变量中(例如boolean bool = true),编译器会告诉你在这个方法中返回一个int.
所以我的问题是:这是Java规范中的某个地方,是否存在这种行为可能有用的情况?
我想写一个java while循环,它将迭代15秒.我认为这样做的一种方法是存储当前系统时间+ 15秒,然后将其与while循环签名中的当前时间进行比较.
有没有更好的办法?
我在R中工作的时候注意到了一个奇怪的事情.当我有一个简单的程序来计算从1到N的平方时使用for-loop和while循环实现的行为是不一样的.(在这种情况下我不关心矢量化或应用函数).
fn1 <- function (N)
{
for(i in 1:N) {
y <- i*i
}
}
Run Code Online (Sandbox Code Playgroud)
和
fn2 <- function (N)
{
i=1
while(i <= N) {
y <- i*i
i <- i + 1
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
system.time(fn1(60000))
user system elapsed
2.500 0.012 2.493
There were 50 or more warnings (use warnings() to see the first 50)
Warning messages:
1: In i * i : NAs produced by integer overflow
.
.
.
system.time(fn2(60000))
user system elapsed
0.138 0.000 0.137 …Run Code Online (Sandbox Code Playgroud) 我需要编写一个无限循环,在按下任何键时停止.
不幸的是,只有在按下一个键时才会循环.
想法好吗?
#!/bin/bash
count=0
while : ; do
# dummy action
echo -n "$a "
let "a+=1"
# detect any key press
read -n 1 keypress
echo $keypress
done
echo "Thanks for using this script."
exit 0
Run Code Online (Sandbox Code Playgroud) while和until之间真正的区别是什么?
我想知道是否可以使用"until"进行越来越多的循环,然后使用while循环.
因为如果我这样做,我就看到了
COUNTER=0
while [ $COUNTER -lt 10 ]; do
echo The counter is $COUNTER
let COUNTER+=1
done
Run Code Online (Sandbox Code Playgroud)
还有这个
COUNTER=20
until [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
他们运作良好.
但如果我做相反的事情,例如:
COUNTER=20
while [ $COUNTER -lt 10 ]; do
echo COUNTER $COUNTER
let COUNTER-=1
done
Run Code Online (Sandbox Code Playgroud)
脚本没有结束.
这是否意味着我们不能在bash中进行一段时间的反向循环?
我正在探索Java中的内存使用,以了解我的程序泄漏内存的原因.在我的main while循环中剥离代码之后,我仍然会随着时间的推移增加内存使用量.思考空程序的内存使用情况:
class Nothing
{ public static void main(String[] args)
{ while(true); }
}
Run Code Online (Sandbox Code Playgroud)
我仍然看到内存增加:
所以我的问题是:为什么还有锯齿形?为什么当GC运行时它不会保存所有内存(每次gc运行(谷值)使用的内存增加10-20Kb(与之前的谷值相比))?
编辑:
java版"1.6.0_29"
Java(TM)SE运行时环境(版本1.6.0_29-b11)
Java HotSpot(TM)客户端VM(内置20.4-b02,混合模式,共享)
操作系统:Windows 7 Enterprise-32位
while-loop ×10
java ×4
for-loop ×3
loops ×3
bash ×2
c ×1
file ×1
memory-leaks ×1
python ×1
python-2.7 ×1
r ×1
time ×1