作者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