[問題] 發散數列求最近值~

看板java作者 (Iamyourfather)時間13年前 (2012/07/08 19:01), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串1/2 (看更多)
求離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

07/08 19:43, , 1F
我不太了解你用i減去的方法,題目總共三個限制:70以下
07/08 19:43, 1F

07/08 19:44, , 2F
偶數、離70最近,應該設幾個判斷式就可以解了
07/08 19:44, 2F
因為題目一開始是出到虛線之前給你提示 所以一定要用到Integer.MAX_VALUE去解的話 我只有想到用減的方式去寫而已 ※ 編輯: tonyshan 來自: 110.3.192.28 (07/08 21:15)

07/08 22:51, , 3F
你好像誤會題目給Integer.MAX_VALUE的意思了 你再想想
07/08 22:51, 3F

07/09 16:33, , 4F
這是考題....? J大說的對. 重點在 diff. 題目要你查兩個數字
07/09 16:33, 4F

07/09 16:37, , 5F
我看不懂一開始給的陣列.array意思在哪..? 這是腦筋急轉彎?
07/09 16:37, 5F

07/09 17:04, , 6F
題目是:從一數列(array)裡找出小於integer.MAX_VALUE
07/09 17:04, 6F

07/09 17:05, , 7F
且最接近integer.MAX_VALUE的偶數...是這樣嗎??
07/09 17:05, 7F

07/09 18:59, , 8F
我覺得你應該是解錯題目了吧...
07/09 18:59, 8F
沒錯這是考題~題目是求最近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)

07/10 09:21, , 9F
通常數線上的距離,我們會用絕對值去比較
07/10 09:21, 9F

07/10 09:23, , 10F
另外你不用掃過所有整數,只要掃你陣列的大小就好了
07/10 09:23, 10F

07/10 09:26, , 11F
這就像變形的取最小值而已,沒這麼難 多看看範例
07/10 09:26, 11F
文章代碼(AID): #1F-MYdb3 (java)
文章代碼(AID): #1F-MYdb3 (java)