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

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

計(jì)算整數(shù)序列的最大值和最小值的程序

計(jì)算整數(shù)序列的最大值和最小值的程序

開滿天機(jī) 2023-03-31 17:07:11
在我的代碼中,我試圖從用戶輸入的數(shù)字序列中找到序列的平均值、最大數(shù)和最小數(shù)。我的問題是我不知道如何編寫代碼,所以當(dāng)用戶鍵入 0 或負(fù)整數(shù)時(shí)停止并進(jìn)行計(jì)算。public class Sequence2{    public static void main(String[] args)    {        Scanner keyb = new Scanner(System.in);        int count = 0;        double sum = 0;        double avg = 0;        int n;        System.out.println("Enter a sequence of positive integers, which will end with either 0 or a negative integer. ");        int max = keyb.nextInt();        int min = keyb.nextInt();        while (keyb.hasNextInt())        {            n = keyb.nextInt();            if (n > max)            {                max = n;            }            if (n < min)            {                min = n;            }            count++;            sum += n;        }        System.out.println("The maximum value is: " + max);        System.out.println("The minimum value is: " + min);        avg = sum / count;        System.out.println("Average = " + avg);    }}
查看完整描述

4 回答

?
暮色呼如

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

解決這個(gè)問題的關(guān)鍵點(diǎn)是維護(hù)在循環(huán)外定義的最小值和最大值的狀態(tài)。特別是,最小值應(yīng)該用最大可能的整數(shù)值作為種子,而最大值可以用零作為種子。


public static void main(String[] args) {

    int minimum = Integer.MAX_VALUE;

    int maximum = 0;

    int total = 0;

    int counter = 0;

    Scanner keyb = new Scanner(System.in);


    while (true) {

        int num = keyb.nextInt();

        if (num <= 0) {

            System.out.println("Exiting input loop.");

            break;

        }


        if (num < minimum) {

            minimum = num;

        }

        if (num > maximum) {

            maximum = num;

        }

        total += num;

        ++counter;

    }


System.out.println("minimum: " + minimum);

System.out.println("maximum: " + maximum);

System.out.println("average: " + (total / counter));

我省略了一些事情,例如處理用戶沒有在掃描儀中輸入有效整數(shù)的可能性。此外,我假設(shè)用戶總是會(huì)輸入至少一個(gè)有效整數(shù)。如果不是,我們將不得不在最后處理平均算術(shù)以避免被零除。


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
慕勒3428872

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

做這件事有很多種方法。如果我們想通過對(duì)現(xiàn)有代碼進(jìn)行最少的更改來做到這一點(diǎn),我會(huì)說最簡(jiǎn)單的選擇是添加一個(gè)布爾標(biāo)志,指示是否繼續(xù)循環(huán):

在你的 while 循環(huán)之前

boolean userWantsToQuit = false;

這應(yīng)該是你的循環(huán)條件:

while (keyb.hasNextInt() && !userWantsToQuit)

然后在您的 while 循環(huán)中,您需要在其他 if 語句之前添加此 if 語句

if(n<=0){userWantsToQuit=true}

您可能還想將其他 if 語句切換為 else if 語句附加到此條件 - 否則您將始終得到 0 或您用來退出的負(fù)數(shù)作為輸入的最小數(shù)字。

您還可以使用 break 語句而不是布爾標(biāo)志 - 這是個(gè)人喜好問題。出于某種原因,我總是被教導(dǎo)要避免 break 語句,所以我通常使用標(biāo)志,但兩者都是有效的方法。

這不是最慣用的解決方案,但它是最相似地遵循您已經(jīng)設(shè)置的模式的解決方案。


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
飲歌長(zhǎng)嘯

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

如果你想讓它更像 Java-8,就像一個(gè)想法。

  1. 首先,您從用戶那里收集所有整數(shù)List<Integer>

  2. 然后計(jì)算IntSummaryStatistics并提取最小值、最大值和平均值:

result = list.stream().collect(Collectors.summarizingInt(Integer::intValue));


min = result.getMin();

max = result.getMax();

average = result.getAverage();


查看完整回答
反對(duì) 回復(fù) 2023-03-31
?
慕姐8265434

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

您走在正確的軌道上,但是您不需要avg在代碼頂部預(yù)先聲明變量,因?yàn)樗皇窃谧詈笥?jì)算的。


對(duì)于循環(huán)退出條件,當(dāng)輸入小于或等于零時(shí),使用 if 語句中斷 while 循環(huán):


import java.util.Scanner;


public class Sequence2 {

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);

        int count = 0, overallMax = 0, overallMin = Integer.MAX_VALUE;

        double sum = 0;

        System.out.println("Enter a sequence of positive integers, which will end with either 0 or a negative integer. ");


        while (scanner.hasNext()) {

            if (scanner.hasNextInt()) {

                int num = scanner.nextInt();

                if (num <= 0) {

                    scanner.close();

                    break;

                }

                overallMax = Math.max(overallMax, num);

                overallMin = Math.min(overallMin, num);

                count++;

                sum += num;

            } else {

                System.out.println("ERROR: Invalid Input. Enter a integer!");

                scanner.next();

            }

        }


        System.out.println("The maximum value is: " + overallMax);

        System.out.println("The minimum value is: " + overallMin);

        double avg = sum / count;

        System.out.println("Average: " + avg);

    }

}

用法示例:


Enter a sequence of positive integers, which will end with either 0 or a negative integer.

4

a

ERROR: Invalid Input. Enter a integer!

2

6

-1

The maximum value is: 6

The minimum value is: 2

Average: 4.0


查看完整回答
反對(duì) 回復(fù) 2023-03-31
  • 4 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報(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)