关于for循环和变量赋值的一个小问题

时间:2014-07-06 12:42:38

标签: java

我正在热身'有关编码的一些练习,我正在玩" tenrun"一个说

对于给定数组中的每个10的倍数,将其后的所有值更改为10的倍数,直到遇到10的另一倍数。因此{2,10,3,4,20,5}产生{2 ,10,10,10,20,20}。

我想有数百种方法可以做到这一点,我想尝试将计数器变量设置为等于10的元素并将其分配给下一个变量,直到它遇到下一个变量:

int count = 0;
for (int i = 0; i < nums.length; i++) {
     if (nums[i] % 10 == 0) { count = nums[i]; }
     else  { nums[i] = count; }
 }

在我要放int [] yuk={20,10,0,0,6,0,56};的主要方法中,我希望得到yuk={20,10,10,10,10,10,10}。而不是yuk={20,10,0,0,6,0,56}; 它没有正确分配计数并返回相同的输入数组。 一般问题的一部分,在for / loops语句中传递的变量如何工作?

4 个答案:

答案 0 :(得分:2)

在if语句中再添加一个条件以检查是否为零:

if (nums[i] % 10 == 0&&nums[i]!=0) {
            count = nums[i];
        } else {
            nums[i] = count;
        }

它应该按预期工作。

答案 1 :(得分:0)

boolean shouldChange = false;
int changeToValue = 0;
for (int i = 0;  i < nums.length; i++) {
    if (nums[i] % 10 == 0 && nums[i] != 0) {
       shouldChange = true;
       changeToValue = nums[i];
    } else if (shouldChange) {
       nums[i] = changeToValue;
    }
}

答案 2 :(得分:0)

使用此代码

public int[] tenRun(int[] nums) {

    for (int i = 0; i < nums.length; i++) {

        if (nums[i] % 10 == 0) {
            for (int j = i + 1; j < nums.length && !(nums[j] % 10 == 0); j++) {
                nums[j] = nums[i];
            }
        }
    }

    return nums;

}

答案 3 :(得分:0)

这很简单

public int[] tenRun(int[] nums) {
  boolean detected = false;
  int value = 0;
  for(int i=0;i<nums.length;i++){

    if( detected ){// after detecting multiple of 10
      if(nums[i]%10 == 0) value = nums[i]; // detected another multiple of 10 ,changing value
      nums[i] = value; // assign detected multiple of 10
    }

    if(nums[i]%10 == 0){ // detect first multiple of 10
        detected = true;
        value = nums[i]; //assign it to value
    }
  }
 return nums; 
}