作者tonyshan (Iamyourfather)
看板java
標題[問題] 發散數列求最近值~
時間Sun Jul 8 19:01:56 2012
求離70最近的偶數:
下面的程式碼是檢查70以下的部分
用i減去的方式去解 i到1000以後跳出
我寫的方法是
class Test02{
int[] array = {0,18,57,75,81};
int diff = integer.MAX_VALUE;
int[] ans = new int[2]; //回答用的數列
-----------------------------------------------
for(int i = 0;i<diff;i++){
for(int j = 0;j<array.length;j++){
if(70-i==array[j]&&(70-i)%2==0){
ans[0]=array[j];
}
}
if(i>1000) //用i值檢查到1000
break;
}
System.out.println("離70以下離最近的是"+ans[0]);
可是這樣寫有一個徵結點就是...
當數列裡面沒有0時這個程式碼沒有問題
但是遇到數列有0和70以下另一個偶數時會列印出離70最近是0
我已經改了一整天沒辦法改出來 感覺好像鬼打牆 越寫越多~
版上高手能幫忙回答~謝謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 110.3.192.28
1F:推 johnhao1206:我不太了解你用i減去的方法,題目總共三個限制:70以下 07/08 19:43
2F:→ johnhao1206:偶數、離70最近,應該設幾個判斷式就可以解了 07/08 19:44
因為題目一開始是出到虛線之前給你提示
所以一定要用到Integer.MAX_VALUE去解的話
我只有想到用減的方式去寫而已
※ 編輯: tonyshan 來自: 110.3.192.28 (07/08 21:15)
3F:推 johnhao1206:你好像誤會題目給Integer.MAX_VALUE的意思了 你再想想 07/08 22:51
4F:→ byend:這是考題....? J大說的對. 重點在 diff. 題目要你查兩個數字 07/09 16:33
5F:→ byend:我看不懂一開始給的陣列.array意思在哪..? 這是腦筋急轉彎? 07/09 16:37
6F:→ risker760915:題目是:從一數列(array)裡找出小於integer.MAX_VALUE 07/09 17:04
7F:→ risker760915:且最接近integer.MAX_VALUE的偶數...是這樣嗎?? 07/09 17:05
8F:推 superlubu:我覺得你應該是解錯題目了吧... 07/09 18:59
沒錯這是考題~題目是求最近70的偶數 如果沒有印出"找不到、全部為奇數"
Integer.MAX_VALUE不是2147483647意思不是近無窮大的值、我想的方法就是一個用i
加的求大於70的數、另一個用減的方式求小於70的數、之後求完兩個數丟進ans數列
重點在於後面的判斷式要用0來判斷有沒有抓到數字、且預設為"0"的關係
所以在數列有"0"的時候很麻煩、看有沒有寫法可以在ans[0]被指定的時候
break跳出
※ 編輯: tonyshan 來自: 110.3.192.28 (07/10 05:02)
※ 編輯: tonyshan 來自: 110.3.192.28 (07/10 06:02)
※ 編輯: tonyshan 來自: 110.3.192.28 (07/10 06:15)
9F:→ johnhao1206:通常數線上的距離,我們會用絕對值去比較 07/10 09:21
10F:→ johnhao1206:另外你不用掃過所有整數,只要掃你陣列的大小就好了 07/10 09:23
11F:→ johnhao1206:這就像變形的取最小值而已,沒這麼難 多看看範例 07/10 09:26