我有一个<TableCell>
<Select>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
</TableCell>
的列表。给定一个数字,代码将计算该数字邻居的平均值。例如,我们从位置7的9开始,然后在values[] = 3 4 6 3 4 5 10 7 4 5 3 10 4 9
中显示满足条件i
的位置values
。然后计算该数字周围五个数字的平均值,即数字本身,前两个数字和后两个数字。
value[i] > 9
我希望得到代码的帮助,因为我想将这些代码应用于大数据。预先感谢
//The average of the 7th and 12th values is computed
average(7th)= (4 + 5 + 10 + 7 + 4 )/5 = 6
average(12th)= (5 + 3+ 10 + 4 + 9)/5 = 6.5
if (values > 9)
show index
else
changes (if false it shows the position)
我期望7和12的输出,但我什么也没得到,因为我无法计算上述条件的平均值。该问题的Matlab代码如下:
//the constructive computation structure
public class calch {
public static void main(String[] args) {
int [] values = {3,4,6,3,4,5,10,7,4,5,3,10,4,9};
for (int i =0; i < values.length; i ++){
double average = 0;
//How do I compute the average here: calculate the average of the five numbers around that number , that is, the number itself, 2 previous number and the 2 following numbers
if ( (values[i] > 9) && (average > 9) ) {
System.out.println("True changes " + values[i]);
} else if ((values[i] > 9) && (average < 9)){
System.out.println (" False Changes " + values[i]);
}
}
}
}
答案 0 :(得分:0)
您只需要访问周围的5个数字,例如values[i-2]+...+values[i+2]
。此外,在使用编码逻辑时,请注意输入数据格式不正确的情况。例如:
在这种情况下,如果您的数组是{12,4,5,9,7,8,13},您将得到
IndexOutOfBoundException
我在下面的代码中处理了这种情况:
public class calch
{
public static void main(String[] args)
{
int [] values = {3,4,6,3,4,5,10,7,4,5,3,10,4,9};
for (int i =0; i < values.length; i ++)
{
// you can just use one "if" for checking "values[i]>9"
// Added some checks so thta you wont get "IndexOutOfBoundsException"
if((values[i] > 9) && (i>1) && (i<values.length-2))
{
double average = (double)(values[i-2]+values[i-1]+values[i]+values[i+1]+values[i+2])/5;
//System.out.println(average); for debugging
if (average > 9)
System.out.println("True changes " + values[i]);
else if (average < 9)
System.out.println("False Changes " + values[i]);
}
else
{
// ... I do't know what to do if data is not in correct form
// that is if you last element of array is >9
}
}
}
}
答案 1 :(得分:0)
您可以通过以下方式计算平均值:
if (values[i] > 9) {
int sum = values[i];
double d = 1.0;
if ((i - 1) > 0) {
sum += values[i - 1];
d += 1.0;
}
if ((i - 2) > 0) {
sum += values[i - 2];
d += 1.0;
}
if ((i + 1) < values.length) {
sum += values[i + 1];
d += 1.0;
}
if ((i + 2) < values.length) {
sum += values[i + 2];
d += 1.0;
}
double avg = sum / d;
}