Java,如果条件为false,则重复If语句

Java,如果条件为false,则重复If语句,java,arrays,if-statement,Java,Arrays,If Statement,简单来说,我基本上有这样一个if语句: if(A[random]==1) A[random]=0; else continue; 现在我知道“continue”用于循环语句,但这不起作用,但我想在else之后做点什么,如果条件为false的elsebasicaly确实被激活,它会重复第一个ifA[random]==1语句。您可以使用while语句代替: while (A[random] != 1) { A[random] = 0; // generate a

简单来说,我基本上有这样一个if语句:

if(A[random]==1)
    A[random]=0;
else 
    continue;
现在我知道“continue”用于循环语句,但这不起作用,但我想在else之后做点什么,如果条件为false的elsebasicaly确实被激活,它会重复第一个ifA[random]==1语句。

您可以使用while语句代替:

while (A[random] != 1) {
    A[random] = 0;
    // generate a new random...
}
您可以改用while语句:

while (A[random] != 1) {
    A[random] = 0;
    // generate a new random...
}

您可以尝试下面的递归代码,看看这个解析是否是您的查询

public class Test {


 public void continueIf(){
    if(A[random]==1)
        A[random]=0;
    else {
        continueIf();
    }
 }

 public static void main(String[] args) {
    new Test().continueIf();
 }
}

请注意,如果条件不满足,则会导致堆栈溢出错误。这也取决于JVM内存的大小。有关stackoverflow错误的更多详细信息,请检查此项。

您可以尝试下面的递归代码,并查看此解决方案是否是您的查询

public class Test {


 public void continueIf(){
    if(A[random]==1)
        A[random]=0;
    else {
        continueIf();
    }
 }

 public static void main(String[] args) {
    new Test().continueIf();
 }
}

请注意,如果条件不满足,则会导致堆栈溢出错误。这也取决于JVM内存的大小。有关stackoverflow错误的更多详细信息,请查看此项。

if/Else语句本身无法通过数组循环工作。我建议把它放在For循环或While循环中。循环将搜索数组,if/else语句将检查索引中提供的条件。我也会除掉其他的。你真的不需要那部分,只是如果

最基本示例中的for循环如下所示:

if(A[random]==1)
    A[random]=0;
else 
    continue;
forvar i=0;i<尺寸;我++ { 如果A[i]==1 A[i]=0; }
SIZE是数组的大小

if/Else语句本身无法在数组中循环。我建议把它放在For循环或While循环中。循环将搜索数组,if/else语句将检查索引中提供的条件。我也会除掉其他的。你真的不需要那部分,只是如果

random = ...;  // get first random number
while (A[random] != 1) {
    random = ...; // get new random number
}
A[random] = 0;  // now is 1, switch it to 0
最基本示例中的for循环如下所示:

if(A[random]==1)
    A[random]=0;
else 
    continue;
forvar i=0;i<尺寸;我++ { 如果A[i]==1 A[i]=0; }
大小将是数组的大小

这应该有效。其他答案已经描述了while和递归
random = ...;  // get first random number
while (A[random] != 1) {
    random = ...; // get new random number
}
A[random] = 0;  // now is 1, switch it to 0
还添加了do while循环

 do{
    //generate the  random number
    }while(A[random]!=1)//The loop iterates till the condition A[random]!=1 is satisfied
    A[random]==0;//changing the bit to 0
请注意,如果数组中没有bit=1,则此解决方案将失败,因为您正在随机生成索引。 因此,如果数组没有元素=1,那么它将继续重复检查索引并生成无限循环


希望对你有帮助。快乐编码

这应该行得通。其他答案已经描述了while和递归,所以我 还添加了do while循环

 do{
    //generate the  random number
    }while(A[random]!=1)//The loop iterates till the condition A[random]!=1 is satisfied
    A[random]==0;//changing the bit to 0
请注意,如果数组中没有bit=1,则此解决方案将失败,因为您正在随机生成索引。 因此,如果数组没有元素=1,那么它将继续重复检查索引并生成无限循环


希望对你有帮助。快乐编码

你可能在找一段时间!条件?这个的终止条件是什么?它应该在[random]==1后终止吗?是的,当它在数组中找到一个位为1并且将其更改为0后,它将结束,if应该停止。使用while语句,如果它发现一个位为0且不会改变任何内容,它将停止迭代101-请在在线提问之前尝试学习基本编码我认为如果数组没有位=1,所有解决方案都不起作用。如果我错了,请纠正我。你可能在找while!条件?这个的终止条件是什么?它应该在[random]==1后终止吗?是的,当它在数组中找到一个位为1并且将其更改为0后,它将结束,if应该停止。用while语句,如果它发现一个位为0,它将停止,并且不会更改任何内容迭代101-请在在线提问之前尝试学习基本编码我认为如果数组没有位=1,任何解决方案都不起作用。如果我错了,请纠正我。这种方法的问题是,我希望它只将数组中的一位从1更改为0,如果随机选择的位是0,它不会改变anything@Mureinik当满足[random]==1时,OP的代码应该停止。您的代码正在执行相反的操作。相反,它应该是[random]=1.@的确如此。得到了一个==而不是一个!=。已修复。@Mureinik A[random]=0应该在while循环之外。否则,它会更改数组中OP不希望更改的所有数字。这种方法的问题是,我希望它只将数组中的一位从1更改为0,如果随机选择的位为0,它不会更改anything@Mureinik当[random]==1已满足。您的代码正在执行相反的操作。相反,它应该是一个[随机]=1.@的确如此。得到了一个==而不是一个!=。已修复。@Mureinik A[random]=0应该在while循环之外。否则它会更改数组中OP不想更改的所有数字。如果我错了,请更正我,但该方法将导致StackOverflowException。它需要回报;,即使这样,逻辑也是错误的
这是我想要的结果,谢谢pise@MirandaCode正如@drewkennedy所说的,如果您的if条件不满足,那么它可能会导致java.lang.StackOverflowerError。好吧,我已经对代码进行了多次迭代,它还没有进行StackOverflowerException,所以一切都很好@MirandaCode我认为pise和Drew Kennedy是对的。您是否检查了数组中没有位=1的代码。如果我错了,请更正我,但该方法将导致StackOverflowException。它需要回报;,即使这样,逻辑也是错误的。我测试了它,它成功了。这是我想要的结果,谢谢pise@MirandaCode正如@drewkennedy所说的,如果您的if条件不满足,那么它可能会导致java.lang.StackOverflowerError。好吧,我已经对代码进行了多次迭代,它还没有进行StackOverflowerException,所以一切都很好@MirandaCode我认为pise和Drew Kennedy是对的。您是否检查了数组中没有位=1的代码。我需要它从a数组中随机选择一个值……记住这一点,我无法在for循环中实现它,并拥有一个[i],有点违背了目的我需要它从数组中随机选择一个值…记住我不能在for循环中实现它并且有一个[i],有点违背了目的虽然这是正确的,此答案的好处在于解释为什么do…while循环会解决OP的问题,而不是只包含一个代码段。@JNYRanger添加了解释。虽然这是正确的,但此答案的好处在于解释为什么do…while循环会解决OP的问题,而不是只包含一个代码段。@JNYRanger添加了解释。