多个if语句和一个循环

时间:2017-01-24 15:25:50

标签: java loops if-statement

我有一个逻辑问题。我将提供伪代码,因为真正的代码不是所有可读的。我只想输入其中一条指令,如果没有任何指令可以访问,我希望函数从循环中断开。

我对编程很陌生,所以感谢任何帮助。

编辑:在每次迭代中,我只希望达到其中一个条件。由于循环持续较长时间,我希望能够在每次迭代时达到相同/其他指令

while(true){
     if(condition){ // Instruction 1
        do stuff
    }else{
        do stuff
    }
    if(condition){ // Instruction 2
        do stuff
    }else{
        do stuff
    }
    if(condition){ // Instruction 3
        do stuff
    }else{
        do stuff
    }

    if(condition){ // Instruction 4
        do stuff
    }else{
        do stuff
    }

    if(none condition){
        break;
    }
}

6 个答案:

答案 0 :(得分:2)

我认为到目前为止,没有人能够获得这个位置,所以我会理解你的问题。

while(true) // keep looping
{
    boolean instructionExecuted = false; // we haven't done an instruction this iteration

    // Instruction 1
    if(condition) {                         
        instructionExecuted = true;
        //do stuff
    } else {
        //do stuff
    }

    // Instruction 2
    if(condition && !instructionExecuted) {  // If we've not done an instruction,
                                             // and we can do instruction #2
        instructionExecuted = true;
        //do stuff
    } else if (!instructionExecuted) {       // only do this if we haven't already
                                             // done an instruction
        //do stuff
    }

    // Instruction 3
    if(condition && !instructionExecuted) { // If we've not done an instruction,
        instructionExecuted = true;         // and we can do instruction #3
        //do stuff
    } else if (!instructionExecuted) {      // only do this if we haven't already
                                            // done an instruction
        //do stuff
    }

    //etc.

    if(none condition)
    {
        break;
    }
}

答案 1 :(得分:0)

添加bool触发器可能就是您要找的东西。如果输入任何if语句,则将触发器设置为true。

答案 2 :(得分:0)

boolean reachable = false;
while(true){
    if(condition){ // Instruction 1
        do stuff
        reachable = true
    }else{
        do stuff
    }
    if(condition){ // Instruction 2
        do stuff
        reachable = true
    }else{
        do stuff
    }
    if(condition){ // Instruction 3
        do stuff
        reachable = true
    }else{
        do stuff
    }

    if(condition){ // Instruction 4
        do stuff
        reachable = true
    }else{
        do stuff
    }

    if(!reachable){
        break;
    }
}

答案 3 :(得分:0)

你正在努力实现这一目标。您需要做的就是在if语句之后添加多个else if语句。

示例:

if (condition) {
    doStuff();
} else if (condition) {
    doStuff();
} else if (condition) {
    ...
} else {
    break;
}

答案 4 :(得分:0)

嗯,有多种方法可以实现您的目标:

  • 引入顶级布尔标志doNotBreak并在if / else阻止执行时设置为true表示循环不应该中断。
  • 通过在循环中使用条件组合来检查它是否会中断:if(condition1 && !condition2 && ..) break;
  • 使用continue而不是最后一个条件,而不是条件和内部if / else阻止你不想破坏的地方,使用class myClass(): def __init__(self): self.__var1 = 'var1' var2 = 'var2' def myNormalMethod(self): print self.__var1 @classmethod def myClassMethod(cls): print cls.__var2 #How do I do this? def myMethod(): print self.__var1 print cls.__var2

答案 5 :(得分:0)

或者,您可以检查是否可以使用switch语句而不是if-else。示例

        public static void main(String argv[]) {
          String [] conditions = {"condition_1","condition_2","condition_3","condition_4","xyz"};
          printConditionType(conditions);
        } 
        public static void printConditionType(String [] conditions){
          int i = 0;
          while (i<conditions.length){
             switch (conditions[i]) {
                 case "condition_1":
                    System.out.println("#1");
                    break;
                 case "condition_2":
                    System.out.println("#2");                    
                    break;
                 case "condition_3":
                    System.out.println("#3");                    
                    break;
                 case "condition_4":
                    System.out.println("#4");
                    break;
                 default:
                    System.out.println("Invalid condition:" + conditions[i]);
            }
            i++;
        }
    }