我试过继续&在java中打破标签,但它会抛出错误。
以下是代码:
$ssh->enablePTY();
$cmd1 = "passwd ".$info['instanceFtpUser'];
$ssh->exec($cmd1);
echo $ssh->read('password:');
$ssh->write($newpass."\n");
echo $ssh->read('password:');
$ssh->write($newpass."\n");
$ssh->disconnect();
答案 0 :(得分:1)
如果您有3个循环并且需要调用break,则标签将与循环一起使用;在最里面的循环中,你会使用一个标签来打破外部循环,因为如果你只是调用break;它将打破最内层并进入中间循环。您使用标签错误,您可以通过使用if ... if else和else语句或使用switch语句轻松解决您的问题。
答案 1 :(得分:0)
标记break
仅适用于周期。
请注意,它们 与goto
等效,因为它们在中断周期后将控件转移到下一个语句 。
这是一个从Oracle网站上的language basics tutorial - break statement复制的示例(如果有其他好的示例,我可能会懒得原创):
public static void main(String[] args) {
int[][] arrayOfInts = {
{ 32, 87, 3, 589 },
{ 12, 1076, 2000, 8 },
{ 622, 127, 77, 955 }
};
int searchfor = 12;
int i;
int j = 0;
boolean foundIt = false;
search:
for (i = 0; i < arrayOfInts.length; i++) {
for (j = 0; j < arrayOfInts[i].length;j++) {
if (arrayOfInts[i][j] == searchfor) {
foundIt = true;
break search;
}
}
}
if (foundIt) // etc
}
}
如果您对如何解决二进制搜索感兴趣,而不是如何使用break
标签。下面的代码与使用goto的代码具有相同的性能(如果它们实际存在于java中)。
private static int search(int[] seq, int key, int low, int high) {
while (low <= high) {
// this is as good as low+(high-low)/2.
int mid = (low + high) >>> 1; // this is (low+high)/2
int midVal = seq[mid];
if (midVal < key) {
low = mid + 1;
}
else if (midVal > key) {
high = mid - 1;
}
else {
// why break when you can return?
return mid; // key found
}
}
// key not found. Return the 2's complement of the insert position:
// that is -(insertPosition+1)
return -(low + 1);
}