以下是我的程式黨
應該直接貼入JBuilder or 類似的程式就可以run
空很大的地方是我的問題處
就是我這樣算出來的答案阿
會是每一行的的第一個數字*0.3+第二個數字*0.3+第三個數字*0.4
可是他會第一個數字乘完0.3先無條件捨去ㄝ
第二和第三個數字也一樣
請問我要怎麼改才能讓每個數字先不要無條件捨去
全部乘完再加總完再來四捨五入阿?
public class ex{
public static void main(String arg[]) {
int len=7, dat[][]=new int[len][3], avg[]=new int[len];
for (int i=0; i
avg[i]+=(dat[i][j]=(int)(10+Math.random()*(95-10)));
avg[i]=dat[i][0]*3/10+dat[i][1]*3/10+dat[i][2]*4/10;
}
int idx[]=sort(avg);
for (int i=0; i
for (int j=0; j<3; j++)
System.out.print("\t"+dat[idx[i]][j]);
System.out.print("\tavg= "+avg[idx[i]]+"");
} System.out.print("\n");
for (int i=0; i
for (int j=0; j<3; j++)
System.out.print("\t"+dat[i][j]);
System.out.print("\tavg= "+avg[i]);
}
} //========//
public static int[] sort(int d[]) {
int n[]=new int[d.length];
for (int i=0; i
{ int tmp=n[j]; n[j]=n[j+1]; n[j+1]=tmp; }
return n;
} //========//
} /**** end_of_class ****/
2007-06-22 15:12:58 · 5 個解答 · 發問者 annn 1 in 電腦與網際網路 ➔ 程式設計
你確定你要的是 : 要怎麼改才能讓每個數字先不要無條件捨去
全部乘完再加總完再來四捨五入阿?
照理說這樣就能解
avg[i] = (int)(dat[i][0] * 0.3 + dat[i][1] * 0.3 + dat[i][2] * 0.4);
麻煩你把下面這幾行加在你出問題的那一行,
解法跟 東邪 一樣, 只不過多了一個轉型和一些觀察運算的輸出而已,看完沒錯就去掉吧!!
System.out.println("算式:"+dat[i][0]+"*3/10="+(dat[i][0]*3/10));
System.out.println("算式:"+dat[i][0]+"*0.3="+(dat[i][0]*0.3));
avg[i]=dat[i][0]*3/10+dat[i][1]*3/10+dat[i][2]*4/10;
System.out.println("avg["+i+"]:(int)("+dat[i][0]+"*0.3+"+dat[i][1]+"*0.3+"+dat[i][2]+"*0.4) = "+avg[i]);
avg[i] = (int)(dat[i][0] * 0.3 + dat[i][1] * 0.3 + dat[i][2] * 0.4);
System.out.println("avg["+i+"]:"+dat[i][0]+"*3/10+"+dat[i][1]+"*3/10+"+dat[i][2]+"*4/10 = "+avg[i]);
System.out.println();
2007-06-23 05:32:14 · answer #1 · answered by 忘記人 3 · 0⤊ 0⤋
public class ex{
public static void main(String arg[]) {
double len=7, dat[][]=new int[len][3],double avg[]=new double[len];
for (int i=0; i
avg[i]+=(dat[i][j]=(int)(10+Math.random()*(95-10)));
avg[i]=dat[i][0]* .3+dat[i][1]* .3+dat[i][2]* .4;
}
int idx[]=sort(avg);
for (int i=0; i
for (int j=0; j<3; j++)
System.out.print("\t"+dat[idx[i]][j]);
System.out.print("\tavg= "+avg[idx[i]]+"");
} System.out.print("\n");
for (int i=0; i
for (int j=0; j<3; j++)
System.out.print("\t"+dat[i][j]);
System.out.print("\tavg= "+avg[i]);
}
} //========//
public static int[] sort(int d[]) {
int n[]=new int[d.length];
for (int i=0; i
{ int tmp=n[j]; n[j]=n[j+1]; n[j+1]=tmp; }
return n;
} //========//
} /**** end_of_class ****/
2007-06-22 17:55:04 · answer #2 · answered by 翰翰兒 1 · 0⤊ 0⤋
把 int dat[][]=new int[len][3] 和 avg[]=new int[len] 宣告成
double dat[][]=new double[len][3]
還有 double avg[]=new double[len]
這是資料型態的問題,注意計算後的結果必須也是「浮點數」資料。
2007-06-22 15:49:34 · answer #3 · answered by Big_John-tw 7 · 0⤊ 0⤋
上面的好新人 我試過不行阿
2007-06-22 20:03:17 補充:
第二個好新人
我試了 可是還是不行ㄝ
最前一個int len=7 要把int改為doubleㄇ?
還是每一個int都要改double阿?
會出現error拉
2007-06-23 00:07:46 補充:
第三個...
我試了...
double avg[]=new double[len];
^^^^^^
這個double是errorㄝ...
請問你有試過ㄇ? 我的JBulider不行...還是謝謝你~
2007-06-23 17:28:59 補充:
我有朋友教我一個解了
想跟大家分享一下~
就是把那一行變成
avg[i]=(int)Math.round(dat[i][0]*0.3+dat[i][1]*0.3+dat[i][2]*0.4);
還是很謝謝大家喔~
2007-06-22 15:47:19 · answer #4 · answered by annn 1 · 0⤊ 0⤋
請把 avg[i]=dat[i][0]*3/10+dat[i][1]*3/10+dat[i][2]*4/10; 改為:
avg[i]=dat[i][0]* .3+dat[i][1]* .3+dat[i][2]* .4;
2007-06-22 15:39:32 · answer #5 · answered by 東邪無弓 7 · 0⤊ 0⤋