我正在热身'有关编码的一些练习,我正在玩" 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语句中传递的变量如何工作?
答案 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;
}