Java 中断“if”语句并返回“for”循环的开始

Java 中断“if”语句并返回“for”循环的开始,java,if-statement,for-loop,break,Java,If Statement,For Loop,Break,因此,对于类的分配,我必须接受用户输入并分配沙鼠对象每天可以使用的食物量。在这种情况下,我已经从用户那里获取了每日最大食物量,如果用户试图输入高于每日最大食物量的值,我需要向用户发送一条错误消息 如果是这种情况,需要重新提示他们输入沙鼠吃的食物量 我似乎不知道如何跳出if语句并返回for循环的顶部。这是我的密码: for (int j = 0; j < numberOfFoods; j++) { System.out.println(gerbilId[index].substrin

因此,对于类的分配,我必须接受用户输入并分配沙鼠对象每天可以使用的食物量。在这种情况下,我已经从用户那里获取了每日最大食物量,如果用户试图输入高于每日最大食物量的值,我需要向用户发送一条错误消息

如果是这种情况,需要重新提示他们输入沙鼠吃的食物量

我似乎不知道如何跳出if语句并返回for循环的顶部。这是我的密码:

for (int j = 0; j < numberOfFoods; j++) {
    System.out.println(gerbilId[index].substring(index)
            + " eats how many " + foodNames[j] + "s per day");
    int amountOfFood = keyboard.nextInt();

    if (amountOfFood > foodMax[j]) {
        System.out.println("Error. Please input a valid amount of food");
        break;
    } else {
        gerbilConsumption[index] = amountOfFood;
    }
}

如果要重新启动for循环,请执行以下操作:

for (int j = 0; j < numberOfFoods; j++) {
    System.out.println(gerbilId[index].substring(index)
            + " eats how many " + foodNames[j] + "s per day");
    int amountOfFood = keyboard.nextInt();

    if (amountOfFood > foodMax[j]) {
        System.out.println("Error. Please input a valid amount of food");
        j = -1;  //instead of break
    } else {
        gerbilConsumption[index] = amountOfFood;
    }
}

如果要重新启动for循环,请执行以下操作:

for (int j = 0; j < numberOfFoods; j++) {
    System.out.println(gerbilId[index].substring(index)
            + " eats how many " + foodNames[j] + "s per day");
    int amountOfFood = keyboard.nextInt();

    if (amountOfFood > foodMax[j]) {
        System.out.println("Error. Please input a valid amount of food");
        j = -1;  //instead of break
    } else {
        gerbilConsumption[index] = amountOfFood;
    }
}
如果用户试图输入值,则向其发送错误消息 高于每日最大值

如果是这种情况,则需要重新提示他们输入金额 沙鼠吃的食物

您不能跳过for循环,因为您正在添加J,这会让您感到困惑

如果需要完成上述任务,请使用类似的代码将其插入for循环

while(true){
//prompt amount of gerbil food
//if input equal or below daily max then BREAK;
//tell user they are above daily max
}
或者使用您的帖子中的代码

int amountOfFood;
while(true){
 amountOfFood=keyboard.nextInt();
 if (amountOfFood <= foodMax[j]) break;
 System.out.println("Error. Please input a valid amount of food");
}
 gerbilConsumption[index] = amountOfFood;
如你所见,我倒了你的支票。您最好检查哪些是有效的,而不是检查哪些是无效的

如果用户试图输入值,则向其发送错误消息 高于每日最大值

如果是这种情况,则需要重新提示他们输入金额 沙鼠吃的食物

您不能跳过for循环,因为您正在添加J,这会让您感到困惑

如果需要完成上述任务,请使用类似的代码将其插入for循环

while(true){
//prompt amount of gerbil food
//if input equal or below daily max then BREAK;
//tell user they are above daily max
}
或者使用您的帖子中的代码

int amountOfFood;
while(true){
 amountOfFood=keyboard.nextInt();
 if (amountOfFood <= foodMax[j]) break;
 System.out.println("Error. Please input a valid amount of food");
}
 gerbilConsumption[index] = amountOfFood;
如你所见,我倒了你的支票。你最好检查哪些是有效的,而不是检查哪些是无效的。

说“使用继续”的答案是错误的,因为在这种情况下它们不是你想要的。“继续”将使您转到下一种食物类型,但如果输入无效,您希望继续使用相同的食物类型。你需要做j-;使该号码再次被使用

if (amountOfFood > foodMax[j]) {
    System.out.println("Error. Please input a valid amount of food");
    j--;
} else {
    gerbilConsumption[index] = amountOfFood;
}
说“继续使用”的答案是错误的,因为在这种情况下,它们不是您想要的。“继续”将使您转到下一种食物类型,但如果输入无效,您希望继续使用相同的食物类型。你需要做j-;使该号码再次被使用

if (amountOfFood > foodMax[j]) {
    System.out.println("Error. Please input a valid amount of food");
    j--;
} else {
    gerbilConsumption[index] = amountOfFood;
}

您还可以重新构造以使用do…while循环-


您还可以重新构造以使用do…while循环-

从技术上讲,您正在寻找Java关键字continue

关键字break将完全脱离for循环

关键字continue将跳过for循环的其余迭代,并开始它的下一个迭代

例如:

//loops 3 times
for(int i = 0; i < 3; i++) {
    if(i == 1) {
        continue;
    }
    System.out.println("Iteration #" + i);
}
这就回答了你问题的实质

然而,正如其他人所指出的,对于您的特定示例,continue实际上并不是您想要的。你真正想用的只是j-。但是为了将来的参考,您现在知道如何中断if语句并返回for循环的顶部。

从技术上讲,您正在寻找Java关键字continue

关键字break将完全脱离for循环

关键字continue将跳过for循环的其余迭代,并开始它的下一个迭代

例如:

//loops 3 times
for(int i = 0; i < 3; i++) {
    if(i == 1) {
        continue;
    }
    System.out.println("Iteration #" + i);
}
这就回答了你问题的实质


然而,正如其他人所指出的,对于您的特定示例,continue实际上并不是您想要的。你真正想用的只是j-。但为了将来的参考,您现在知道如何打破if语句并返回到for循环的顶部。

查看continue。对不起,这篇文章没有什么可否决的。人们经常把那些表现出缺乏努力的问题与那些表现出努力但可能不知道某件事的问题混淆起来,而这正是问题一开始被问到的原因。如果你让自己更加困惑,你为什么要打破你的陈述。你为什么要这样做?是的,这是我第一次上计算机科学课,所以我对所有的事情都很陌生。谢谢你的帮助。请继续。对不起,没有什么可以否决这篇文章的。人们经常把那些表现出缺乏努力的问题与那些表现出努力但可能不知道某件事的问题混淆起来,而这正是问题一开始被问到的原因。如果你让自己更加困惑,你为什么要打破你的陈述。你为什么要这样做?是的,这是我第一次上计算机科学课,所以我对所有的事情都很陌生。谢谢你的帮助。你说得对,但我认为他需要j-;不是j=-1;因为您希望再次执行相同的循环迭代,而不是启动整个for循环again@jimmycarr虽然不清楚OP想要什么,但你的回答是+1。@carloscollazo它工作得很好,直到你在第二或第三个数字上输入的数量超过最大值为止
循环,它会让你意外地跳回0。@codecamp我想这就是OP想要的。原因,我不知道。正如一些人所说的,j-实际上对我正在尝试的工作更有效。你是对的,但我认为他需要j-;不是j=-1;因为您希望再次执行相同的循环迭代,不启动整个for循环again@jimmycarr不清楚OP想要什么,但你的回答是+1。@carloscollazo它工作得很好,直到你在第二或第三个numberOfFoods循环中输入一个高于最大值的量,它会让你意外地跳回0。@CodeCamper我想这就是OP想要的。原因,我不知道。正如一些人所说的那样,j-实际上对我正在尝试的工作更有效。我想你会对我的答案投反对票。我已经更新了它,请看我的推理,并考虑取消你的投票。不,根本不是我,我很抱歉看到你被否决了写一些仍然有用的东西,即使不是他在这个例子中寻找的。我假设你否决了我的答案。我已经更新了它,请看我的推理,并考虑取消你的投票。不,它不是我,我很遗憾看到你被否决了写一些仍然有用的东西,即使不是他在这个例子中寻找的东西。