[英]Java: Reading from a file and finding the sum and average of all numbers within
[英]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
。 您很可能希望將count
, numberentered
和numbersum
為int
。
您永遠不會將除0之外的值(在初始化中)分配給negativenumber
,然后執行
if (numberentered < 0)
{
numberentered = negativenumber;
}
並且do ... while循環終止,因為numberentered
為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.