Discussion:
[問題] 該怎麼改阿
(时间太久无法回复)
annn
2007-06-22 11:15:18 UTC
Permalink
以下是我的程式黨

應該直接貼入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<len; i++) {
for (int j=0; j<3; j++)
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<len; i++) {
System.out.print("\n"+(1+idx[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<len; i++) {
System.out.print("\n"+(1+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<d.length; i++) n[i]=i;
for (int i=0; i<d.length; i++)
for (int j=0; j<d.length-1; j++)
if (d[n[j]]>d[n[j+1]])
{ int tmp=n[j]; n[j]=n[j+1]; n[j+1]=tmp; }
return n;
} //========//
} /**** end_of_class ****/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.153
Alien
2007-06-22 11:22:33 UTC
Permalink
※ 引述《annn17 (annn)》之銘言:
: 以下是我的程式黨
: 應該直接貼入JBuilder or 類似的程式就可以run
: 空很大的地方是我的問題處
: 就是我這樣算出來的答案阿
: 會是每一行的的第一個數字*0.3+第二個數字*0.3+第三個數字*0.4
: 可是他會第一個數字乘完0.3先無條件捨去ㄝ
: 第二和第三個數字也一樣
: 請問我要怎麼改才能讓每個數字先不要無條件捨去
: 全部乘完再加總完再來四捨五入阿?
: 請問可以在這邊問嗎 還是我該去哪邊問呢?

你作的是整數運算

請 n *0.3 吧

alien

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 202.22.246.26
annn
2007-06-22 11:33:51 UTC
Permalink
可是我試過

用* 的會有ERROR ^^"


※ 引述《adrianshum (Alien)》之銘言:
: ※ 引述《annn17 (annn)》之銘言:
: : 以下是我的程式黨
: : 應該直接貼入JBuilder or 類似的程式就可以run
: : 空很大的地方是我的問題處
: : 就是我這樣算出來的答案阿
: : 會是每一行的的第一個數字*0.3+第二個數字*0.3+第三個數字*0.4
: : 可是他會第一個數字乘完0.3先無條件捨去ㄝ
: : 第二和第三個數字也一樣
: : 請問我要怎麼改才能讓每個數字先不要無條件捨去
: : 全部乘完再加總完再來四捨五入阿?
: : 請問可以在這邊問嗎 還是我該去哪邊問呢?
: 你作的是整數運算
: 請 n *0.3 吧
: alien

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.25.118.153
ha(ruhi|yate)ism
2007-06-22 12:48:54 UTC
Permalink
�� �ޭz�mannn17 (annn)�n���ʨ��G
: �i�O�ڸչL
: ��* ���|��ERROR ^^"
: �� �ޭz�madrianshum (Alien)�n���ʨ��G
: : �A�@���O���ƹB��
: : �� n *0.3 �a
: : alien
���O�]���A��avg�٬O��int

(�����`���i���C�������n�O���Ƨa?!)

�令double��float�a

--
 �� ��_�c�d�e�c_��. ���@�@�@�@�@ �@�@�@�@�f�f�@�f�f�@�d�����@�@ �i�e�e�e�e�e 
�l./��_�c�d�e�c_�� \'�o �@�@�֢Ϣ����֢� �i�i�i�i�i�@�ա��} �@ �e�e�e�e�e�e�e 
�k�� �������i�����i�G   �@�@�ע��ۡ@ �@�@By-gamejye�@�F|\ �@�@�m�m�m�m�m�e�m�m
�j�a(�j�����������o)�Z �j�@�@ �@�@�@ �@�@�@�@�i�@�@�@ ���G �@�@�e�e�e �e�e�e�e
�i/|�o �� �B ���n |\ �k�@�@�@�@�@ �@ �@�����ΥD�q�@�@�@ �@�@�i�e�e�e�i�e�e 
����|�� ���� ��/'����S.O.S �@���y�j���R���q�W���r�F�h�U�D�c�������U�o�@�@�@ 

--
�� �o�H��: ���������~�{(ptt.cc)
�� From: 192.192.197.117
c***@kkcity.com.tw
2007-06-22 18:17:15 UTC
Permalink
Post by annn
以下是我的程式黨
應該直接貼入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<len; i++) {
for (int j=0; j<3; j++)
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;
==>改成 avg[i]=(int)Math.round(dat[i][0]*0.3+dat[i][1]*0.3+dat[i][2]*0.4);
就可以取得四捨五入的值了
Post by annn
}
int idx[]=sort(avg);
for (int i=0; i<len; i++) {
System.out.print("\n"+(1+idx[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<len; i++) {
System.out.print("\n"+(1+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<d.length; i++) n[i]=i;
for (int i=0; i<d.length; i++)
for (int j=0; j<d.length-1; j++)
if (d[n[j]]>d[n[j+1]])
{ int tmp=n[j]; n[j]=n[j+1]; n[j+1]=tmp; }
return n;
} //========//
} /**** end_of_class ****/
--
┌─────◆KKCITY◆─────┐ ◢ ◤  ★ 線上音樂新震撼 ★ ◢ ◤
│ bbs.kkcity.com.tw │ ^_^ /  隨選隨播免等待  KKBOX◤  ^_^ / 
└──《From:220.138.49.70 》──┘    ◤ http://www.kkbox.com.tw   ◤
--
非天夜翔
2007-06-23 10:54:04 UTC
Permalink
※ 引述《annn17 (annn)》之銘言:
: 以下是我的程式黨
: 應該直接貼入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<len; i++) {
: for (int j=0; j<3; j++)
: 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;
avg[i]=(dat[i][0]*3 +dat[i][i]*3 +dat[i][2]*4 )/10;
: }
: int idx[]=sort(avg);
: for (int i=0; i<len; i++) {
: System.out.print("\n"+(1+idx[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<len; i++) {
: System.out.print("\n"+(1+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<d.length; i++) n[i]=i;
: for (int i=0; i<d.length; i++)
: for (int j=0; j<d.length-1; j++)
: if (d[n[j]]>d[n[j+1]])
: { int tmp=n[j]; n[j]=n[j+1]; n[j+1]=tmp; }
: return n;
: } //========//
: } /**** end_of_class ****/

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.217.15

继续阅读narkive:
Loading...