有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中的增量算法

我试图给数组一些值

到目前为止,我有以下代码

double[] weeks = new double[10];

for(int i = 0; i < weeks.length; i++) {               
    weeks[0]= 2;
    weeks[9]= 26;
}

第1周(或week[0])需要为2周,第10周(或week[9])需要为26周

我试图找出一种算法,它可以用来自动地在2和26之间均匀地增加数组的值。由于26 - 2 = 24并且在week[0]之后有9个值需要填充,我已经计算出增量应该是8/32.6 recurring。例如,值应如下所示

2
4.6666666666
7.3333333333
...
23.333333333
26

共 (5) 个答案

  1. # 1 楼答案

    我也不太确定你想要实现什么,但我可能知道你的问题是什么。如果只想增加for循环中的变量i,只需编写:

    for(float i=0;i < weeks.length;i+=2.6) {
        //Do your Code here
    }
    

    但我不认为这是你的问题,所以请准确地给出一个例子,并在注释中写下你希望代码做什么

  2. # 2 楼答案

    这里是数学有用的地方:

    weeks[0]= 2;
    weeks[9]= 26;
    

    可视为

    f(0)=2
    f(9)=26
    

    现在,如果你想要一个线性关系,那么f(x)的形式是f(x)=a*x+b。您已经有了上面的两个数据点,只需要求解ab。提示:您可以简单地推断b应该是2

  3. # 3 楼答案

    第1周(或指数0)需要为2,第10周(或指数9)需要为26

    如果我理解您的意思,您希望以大约相等的间隔使用从226的值填充数组week。你可以用这样的东西

    int min = 2;
    int max = 26;
    int count = 10;
    double inc = (max - min) / (double) (count - 1);
    int[] weeks = new int[count];
    double init = min;
    for (int i = 0; i < count; i++) {
        weeks[i] = (int) Math.round(init);
        init += inc;
    }
    System.out.println(Arrays.toString(weeks));
    

    输出(根据要求)从2到26

    [2, 5, 7, 10, 13, 15, 18, 21, 23, 26]
    
  4. # 4 楼答案

    import java.util.Arrays;
    
    public class Test
    {
        public static void main(String[] args)
        {
            double[] weeks = new double[10];   
            int [] intList = new int[10];
            double increment = 2.666666666666666;
            int sum=0;
            double average=0;
            weeks[0]= 2;
            for(int i = 1; i < weeks.length; i++) {
                weeks[i]= weeks[i-1]+increment;
            }
    
            System.out.println(Arrays.toString(weeks));
        }
    }
    

    此代码输出

    [2.0, 4.666666666666666, 7.333333333333332, 9.999999999999998, 12.666666666666664, 15.33333333333333, 17.999999999999996, 20.666666666666664, 23.333333333333332, 26.0]

  5. # 5 楼答案

    public class SolutionClass {
    
        public static void main(String[] args) {
            double[] weeks = new double[10];   
            int [] intList = new int[10];
            int sum = 0;
            weeks[0] = 2;
            weeks[9] = 26;
            double average = (weeks[weeks.length - 1]-weeks[0]) / (weeks.length - 1);
    
            for (int i = 1; i < weeks.length - 1; i++) {               
                weeks[i] = weeks[0] + i * average;
            }
            for (int i = 0; i < weeks.length; i++) {               
                System.out.println(i + "; " + weeks[i]);
            }
        }
    }
    

    输出:

    0; 2.0
    1; 4.666666666666666
    2; 7.333333333333333
    3; 10.0
    4; 12.666666666666666
    5; 15.333333333333332
    6; 18.0
    7; 20.666666666666664
    8; 23.333333333333332
    9; 26.0