簡體   English   中英

為什么最后一個 else 語句沒有在這里打印/執行?

[英]Why is the last else statement not printing/executing here?

最后一個 else 語句不會打印任何內容……只是接受輸入並停止程序。 我究竟做錯了什么?

我是全新的,剛開始學習java。 沒有任何代碼方面的經驗。 對不起。

嘗試檢查語法對“我的菜鳥眼睛”來說一切正常

import java.util.Scanner;
public class MyClass 
{
    public static void main(String[] args)

    { 
        Scanner scn = new Scanner(System.in);

        int x =7;

        System.out.println("Enter a Number from 1 to 10: ");

        int guess = scn.nextInt();

        while(x != guess) 
        {
            if(x < guess) {
            System.out.println("Guess Lower...");
            guess = scn.nextInt();
            }

            else if (x > guess) {
                System.out.println("Guess Higher...");
                guess = scn.nextInt();
            }

            else {
            System.out.println("Correct Guess!");
            }
        } 
        }

}


所以如果我輸入 7 它應該說/顯示正確的猜測!

但它不會顯示任何東西。

猜測低和高工作正常。

當比較正確的數字時,代碼立即轉義while循環,因此無法訪問最后一個else語句。

你可以做你想做的如下:

import java.util.Scanner;
public class MyClass 
{
    public static void main(String[] args)

    { 
        Scanner scn = new Scanner(System.in);

        int x =7;

        System.out.println("Enter a Number from 1 to 10: ");

        int guess = scn.nextInt();

        while(x != guess) {
            if(x < guess) {
                System.out.println("Guess Lower...");
                guess = scn.nextInt();
            } else if (x > guess) {
                System.out.println("Guess Higher...");
                guess = scn.nextInt();
            }
        } 
        System.out.println("Correct Guess!");
     }
}

您應該將這段代碼System.out.println("Correct Guess!")從循環中取出,因為它會一直循環直到找到猜測的值,而不會轉到代碼的下一行。

請參考下面的代碼。

Scanner scn = new Scanner(System.in);

    int x = 7;

    System.out.println("Enter a Number from 1 to 10: ");

    int guess = scn.nextInt();

    while (x != guess) {
        if (x == guess)
            System.out.println("correct");
        else if (x < guess) {
            System.out.println("Guess Lower...");
            guess = scn.nextInt();
        }

        else if (x > guess) {
            System.out.println("Guess Higher...");
            guess = scn.nextInt();
        }

    }
    System.out.println("correct");

}

你的問題是 while 循環的條件。 看看Recursión in Java中的Recursión in Java 可以這樣做:

import java.util.*;

public class MyClass 
{

 public static void main(String []args)
 {
   new_guess();

}


static void new_guess()
{
    int correct_answer = 7;
    Scanner scn = new Scanner(System.in);

    System.out.println("Enter a Number from 1 to 10: ");
    int guess = scn.nextInt();

    if(correct_answer != guess)
    {
        if(correct_answer < guess)
        {
        System.out.println("Guess Lower...");
        }
        else if (correct_answer > guess) 
        {
            System.out.println("Guess Higher...");
        }
        new_guess();
    }
    else
    {
          System.out.println("Correct Guess!");
    }

}

}

它是一個 while 循環,它一直運行直到指定的表達式為 false,因此您不需要引入 else 塊來“確認”guess 變量的相等性。 當您的表達式返回 false 時,它​​會自動打印出下一步。

    while(x != guess) 
    {
        if(x < guess) {
        System.out.println("Guess Lower...");
        guess = scn.nextInt();
        }

        else if (x > guess) {
            System.out.println("Guess Higher...");
            guess = scn.nextInt();
        }
    } 
        System.out.println("correct!");
    }

基本上你的代碼應該以這種方式進行改革

暫無
暫無

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

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