题目:定义一个int类型的数组,让数组中每个位置的值除以首位置的元素,得到的结果,作为该位置上的新值。组成新的数组
按照常规的思路:
进行一个for循环,让i在小于数组长度时,所在位置的数字除以首个元素。
public class test {
public static void main(String[] args) {
int[] arr = new int[]{12,24,36,43,56,77,432};
//执行 除 操作
for (int i = 0; i <arr.length; i++) {
arr[i] = arr[i] / arr[0];
}
//遍历输出
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
}
}
结果如下,可见第一个元素变为1,其余的元素都不变。
找出原因很简单,因为i从0开始时,数组第一个元素12除以自身变成了1,后续的计算再怎么除就都是不变的结果。
只要把i从1开始就能解决问题 了吗?
for (int i = 1; i <arr.length; i++) {
arr[i] = arr[i] / arr[0];
}
把i从1开始实际上是跳过了第一个元素计算的过程,所以即使后面的计算好了,首个元素应该是1才对(注意题目说是每个元素)。
正方向遍历不行,反方向是否可以呢。按照设想,数组中最后一个元素除以首元素,然后依次向前,最后一个元素除以自身就可以了
for (int i = arr.length - 1; i >=0; i--) {
arr[i] = arr[i] / arr[0];
}
输出结果至此正确。
“能够不依靠别人就认可自己的价值,这样才能不再把自己困在旧时光里”----板鸭