97年關務-程式語言概要 - 考試

Table of Contents

前面恕刪,不好意思

在第二小題中,我認同你提出的(2)

如果分母為零,在執行過程中會遇到fatal error,程式將會停止執行

解決辦法為

將System.out.println( "Av = "+(s/c));

改成System.out.println( "Av = "+ ( (c==0)?0:(s/c) ) )

即可解決

歡迎討論:)

: -------------------------------------------------------------------
: class javaTest{
: public static void main(String args[]){
: int dset[] = {90,30,-5,70,95,110,80};
: int c = 0; int s = 0;
: for (int i = 0; i <dset.length ; i++){
: if (dset[i] <= 100 && dset[i] >= 0){
: c++;
: s+= dset[i];
: }
: }
: System.out.println( "Av = "+(s/c));
: }
: }
: -------------------------------------------------------------------
: 第二題我想到的可能問題有兩個:
: (1)在dset中介於0-100之間的數造成s/c不能整除的情況下,
: 答案只會顯示整數的部分,所求的平均值不完全正確
: (2)在dset中介於0-100之間的數是0個,造成s/c分母為0
: 就嚴重度來說我個人是覺得(2)比較嚴重,
: 但由於題目規定只能修改一條敘述,不能新增或刪除敘述
: 第(1)個問題小弟還有辦法解決
: 可是第(2)個方法小弟還想不到只修改一條敘述就解決的方法...
: 或者小弟根本就想錯....題目要問的根本不是這兩種情況呢?
: 想請板上強者大大們指點指點~

--

All Comments

Freda avatarFreda2013-06-15
推,這應該是正解
Heather avatarHeather2013-06-18
恩恩~太感謝大大了~我以為這種三元運算只適用c/c++~看
來我讀的還不夠阿~~~