簡體   English   中英

達到極限后計數器不會停止

[英]counter does not stop after it reaches the limit

我正在為我的班級做一個計數計數器,我們必須為計數器達到一定數量設置一個限制,但是當計數器達到一定數量時它將繼續運行而不是停止。 我的老師還希望我們使用“ Math.max(n,0)”之類的東西,但是我不明白為什么我們要在if語句中使用它。

int i=1;
boolean ticking = true;
running:
while (ticking){

String tally = input.nextLine();           

if (tally.equalsIgnoreCase("z"))
{
    System.out.println(i++);
    continue running;
}
else if (tally.equalsIgnoreCase("x"))
{
    System.out.println(i--);
    continue running;
}
else if (i<=0 || i>=10)
{
    System.out.println("Cant go no more");
    continue running;
}

您沒有指定循環退出條件。 在循環中, ticking的確從未設置為false

在這里,您可能應該允許循環退出但繼續:

else if (i<=0 || i>=10)
{
    System.out.println("Cant go no more");
    continue running;
}

通過將ticking設置為false可以退出循環。 此外,如果要防止在這種情況下i<=0 || i>=10再次循環,則應使用if語句而不是else-if語句。 i<=0 || i>=10true ,現在具有遞增或遞減后i
它會給:

if (tally.equalsIgnoreCase("z"))
{
    System.out.println(i++);
    continue running;
}
else if (tally.equalsIgnoreCase("x"))
{
    System.out.println(i--);
    continue running;
}

if (i<=0 || i>=10)
{
    System.out.println("Cant go no more");
    ticking = false;
}

作為旁注,為什么要使用標記循環?
當您有嵌套循環並且想要繼續或中斷外部循環時,使用它很有意義。

還要為什么在每個條件語句的末尾添加continue語句?
if-else-if語句不執行下一個條件語句,因為其中一個為true


我的老師還希望我們使用“ Math.max(n,0)”之類的東西,但是我不明白為什么我們要在if語句中使用它。

我不確定。
確切的要求是什么?
無論如何, Math.max(n,0)不會替換i<=0 || i>=10 i<=0 || i>=10因為這最后一個條件檢查該值是否在最小和最大范圍之間,而Math.max(n,0)僅幫助您檢查該值是否不超過最大值。

達到上限后,您需要將滴答設為false。

if (i<=0 || i>=10)
{
    ticking = false;
    System.out.println("Cant go no more");
}

兩件事情:

你的最后一個條件即內部1-語句else if (i<=0 || i>=10)塊僅當值將要執行tally是不等於"z""x"

2-要停止計數,您需要將滴答設為等於false:

else if (i<=0 || i>=10) {
    ticking = false;
    System.out.println("Cant go no more"); 
}

對於Math.max(n,0)我認為這將打印出計數

System.out.println("Total Count: "+Math.max(i,0));


您需要這樣的東西:

        int i=1;
        boolean ticking = true;
        running:
            while (ticking){

            Scanner sc = new Scanner(System.in);
            String tally = sc.nextLine();           

            if (tally.equalsIgnoreCase("z"))
            {
                System.out.println(i++);
            }
            else if (tally.equalsIgnoreCase("x"))
            {
                System.out.println(i--);
            }
            if (i<=0 || i>=10)
            {
                ticking = false;
                System.out.println("Cant go no more");
            }
            continue running;

        }
    System.out.println("Total Count: "+Math.max(i,0));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM