簡體   English   中英

從Java中的數字列表中查找平均值

[英]Finding the Average from a list of numbers in Java

這是我第一次嘗試java問題,作為編程任務的一部分。

我必須創建一個程序來計算用戶輸入的數字列表的平均值。 輸入0時應終止數據。 我的問題是這個“所有的負數都應該被忽視”

由於某種原因,下面的代碼不起作用,當我輸入一個負數時,它應該被忽略,但由於某種原因它終止了數據

import java.util.*;

class Task_8
  {
public static void main()
  {

    Scanner inputLine = new Scanner(System.in);

    float row, numberentered, numbersum = 0, negativenumber = 0;
    double result, count = 0;


    System.out.println ("Welcome to Task 8 of 10 of my Programming Assignment... Nearly There!");
    System.out.println ("_____________________________________________________________________");
    System.out.println ();
    System.out.println ("Enter as many numbers as you like and this program will tell you the arithmatic mean");
    System.out.println ("Terminate data entry by entering 0");


   do{

       System.out.print ("Please enter a number: ");
        numberentered = inputLine.nextInt();

        count++;

        if (numberentered < 0)
        {
            numberentered  = negativenumber;   
        }

        numbersum = ( numberentered + numbersum ) - negativenumber;

    }

  while  ( numberentered !=0 );

     result = numbersum/count;
     System.out.println ();
     System.out.println ("*************************************");
     System.out.println ();
     System.out.println ("The sum of all of the numbers you entered is " +numbersum);
     System.out.println ("You entered " + count + " numbers");
     System.out.println ("The Average/mean of the numbers that you entered is " + result);


    System.out.println ();
    System.out.println ("*************************************");

  }
}

任何想法家伙?

謝謝

變量negativenumber的值始終為零。 當您將numberentered設置為negativenumber時,滿足“while”條件,並且循環退出。 當輸入負數時,更好的策略是“繼續”跳過循環體的其余部分。

如果要忽略負數,則不要在計算中包含它。 而是做類似的事情:

if (numberentered > 0)
{
   numbersum += numberentered;
}

檢查以下代碼塊:

if (numberentered < 0)
{
    numberentered  = negativenumber;   
}

這樣做是將numberentered設置為0.然后,在do-while循環結束時,你有:

while(numberentered != 0);

因此,每當用戶鍵入負數時,您將numberentered設置為零。 到達循環結束時, numberentered != 0為false,因此循環退出。

更簡單的解決方案,以及更類似於您將來要學習的內容,只需在if語句中檢查數字的值,然后根據其值添加或不添加。

if(numberentered > 0)
    numbersum += numberentered;

這是干凈,簡潔,並且不需要使用多余的negativenumber變量,這可能令人困惑。 如果你從現在起一年后查看這段代碼,你會記得什么是negativenumber ,或者為什么它被設置為零? 編寫代碼,好像其他人必須閱讀並理解它。 你的教授會,以及將來你的同事會。

另一方面,您正在讀取整數(使用inputLine.nextInt() ),但將它們存儲在float 你還宣稱count double 您很可能希望將countnumberenterednumbersumint

您永遠不會將除0之外的值(在初始化中)分配給negativenumber ,然后執行

if (numberentered < 0)
{
    numberentered  = negativenumber;   
}

並且do ... while循環終止,因為numberentered為0。

暫無
暫無

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

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