第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么我的代碼必須輸入兩個(gè)輸入才能開(kāi)始運(yùn)行?

為什么我的代碼必須輸入兩個(gè)輸入才能開(kāi)始運(yùn)行?

藍(lán)山帝景 2023-10-12 14:43:14
我在代碼中使用 while 語(yǔ)句,用戶在 while 語(yǔ)句內(nèi)輸入一個(gè)數(shù)字。要停止程序循環(huán),用戶必須輸入“停止”一詞。但是,一旦我輸入一個(gè)數(shù)字,輸出就會(huì)跳到另一行,而不打印我希望它打印的語(yǔ)句,并且我必須再次輸入所需的輸入以使程序開(kāi)始循環(huán)。唯一不會(huì)發(fā)生此問(wèn)題的情況是當(dāng)用戶首先輸入“stop”時(shí),代碼就可以正常工作。這是為了找到任意數(shù)量的用戶輸入數(shù)字的最大值、最小值和平均值。我嘗試更改 else/if 語(yǔ)句的順序以及所述 else/if 語(yǔ)句的參數(shù),但似乎沒(méi)有任何效果。    boolean stopped = false;    int numberAmount = 0;    int invalidAmount = 0;    double max = Integer.MIN_VALUE;    double min = Integer.MAX_VALUE;    double mean = 0;            while(stopped == false)    {           System.out.print("Enter a number (type "+"\""+"stop"+"\""+" to stop): ");        String originalInput = userInput.nextLine();        if(originalInput.equals("stop"))        {            stopped = true;            invalidAmount ++;            System.out.println(numberAmount+" numbers were entered with "+invalidAmount+" invalid inputs.");        }        else if(userInput.hasNextDouble())        {            double currentValue = Double.parseDouble(originalInput);            max = Math.max(max, currentValue);            min = Math.min(min, currentValue);            mean = currentValue;            numberAmount ++;        }        else if(originalInput.equals("stop") == false)        {            System.out.println("Not a number...");            invalidAmount ++;        }    }    System.out.println("The maximum is "+max+".");    System.out.println("The minimum is "+min+".");    System.out.println("The mean is "+(mean / numberAmount)+".");    userInput.close();}}例如,我期望輸入 7 后的輸出為下一行的“輸入數(shù)字(鍵入“stop”停止):”(因?yàn)槌绦蜓h(huán)不斷提示輸入數(shù)字),然后用戶可以繼續(xù)輸入他們喜歡的數(shù)字。相反,實(shí)際輸出是原始提示用戶輸入下的空行,用戶必須再次輸入所需的輸入,程序才能開(kāi)始循環(huán)。
查看完整描述

3 回答

?
至尊寶的傳說(shuō)

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊

您沒(méi)有在代碼示例中指定userInput是什么,但從使用情況來(lái)看,它看起來(lái)是 的實(shí)例Scanner。如果你有一個(gè)Scanner聲明然后調(diào)用hasNextDouble(),你將得到一個(gè)符合你的用法的布爾結(jié)果——你將其作為語(yǔ)句中的條件if

Scanner?userInput?=?new?Scanner(System.in);
boolean?b?=?userInput.hasNextDouble();

圖片中缺少的是如何hasNextDouble()工作的。查看Scanner 的 Javadoc:

如果可以使用 nextDouble() 方法將此掃描器輸入中的下一個(gè)標(biāo)記解釋為雙精度值,則返回 true。掃描儀不會(huì)前進(jìn)超過(guò)任何輸入。

為了回答下一個(gè)輸入是否是雙精度數(shù)的真/假,掃描儀必須等待用戶的輸入才能繼續(xù)。

所有這些都是為了說(shuō)明:您的代碼看起來(lái)運(yùn)行正常。如果您不想等待用戶輸入,則需要編寫(xiě)代碼來(lái)反映這一點(diǎn)。


查看完整回答
反對(duì) 回復(fù) 2023-10-12
?
Qyouu

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超11個(gè)贊

我認(rèn)為你應(yīng)該反轉(zhuǎn)代碼的邏輯,假設(shè)你正在使用掃描儀,嘗試這樣的事情:


import java.util.Scanner;


public class Main {

    public static void main(String[] args) {

        boolean stopped = false;


        int numberAmount = 0;

        int invalidAmount = 0;


        double max = Integer.MIN_VALUE;

        double min = Integer.MAX_VALUE;

        double mean = 0;


        while (stopped == false) {


            Scanner userInput = new Scanner(System.in);

            System.out.print("Enter a number (type " + "\"" + "stop" + "\"" + " to stop): ");


            if (userInput.hasNextDouble()) {

                double currentValue = userInput.nextDouble();

                max = Math.max(max, currentValue);

                min = Math.min(min, currentValue);

                mean = currentValue;

                numberAmount++;


            } else {

                String originalInput = userInput.nextLine();

                if (originalInput.equals("stop")) {

                    stopped = true;

                    invalidAmount++;

                    System.out.println(numberAmount + " numbers were entered with " + invalidAmount + " invalid inputs.");

                } else {

                    System.out.println("Not a number...");

                    invalidAmount++;

                }

            }

        }



        System.out.println("The maximum is " + max + ".");

        System.out.println("The minimum is " + min + ".");

        System.out.println("The mean is " + (mean / numberAmount) + ".");


        // userInput.close();

    }

}

基本上,您首先檢查輸入類(lèi)型,然后才從控制臺(tái)收集值。按照你現(xiàn)在的方式去做,你總是會(huì)要求第二個(gè)輸入。


查看完整回答
反對(duì) 回復(fù) 2023-10-12
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

我不太了解 API,但我希望 hasNextDouble 讀取另一行。檢查originalInput是否為double,不要讀取另一行。



查看完整回答
反對(duì) 回復(fù) 2023-10-12
  • 3 回答
  • 0 關(guān)注
  • 193 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)