使用数组Java



我的问题是:

  • 此代码是否正确,是否正确分配给车轮速度和持续时间
  • 我需要做什么才能添加主方法来运行代码
  • 使用for循环遍历每行,指示Finch机器人根据每行中的数字移动。使用代码JOptionPane在每次移动之后暂停。showMessageDialog(null,"Click OK to continue…");

公共类FinchArray {

public static final int LEFT_WHEEL = 0;
public static final int RIGHT_WHEEL = 1;
public static final int DURATION = 2;{

    int[][] x = new int[10][3]; // 2D array filled with zeros
    int time = 25;
    for (int[] row : x) {
        row[2] = time;
        time += 25;
    }
    for (int[] row : x) {
        row[DURATION] = time;
        time += 25;
    }
    for (int[] row : x){
        row[LEFT_WHEEL] = time;
        time += 25;
    }
    for (int[] row : x){
        row[RIGHT_WHEEL] = time;
        time += 25;
    }
    Finch fRobot = new Finch();
    fRobot.setWheelVelocities(LEFT_WHEEL,RIGHT_WHEEL,DURATION);
    long before = System.currentTimeMillis();
    while (System.currentTimeMillis() - before < 5000){
         if(fRobot.isObstacle())break; {
        }
            fRobot.stopWheels();
            fRobot.quit();
    }


}

你可以像这样初始化你的2D数组(在Java中,它实际上只是一个1D数组的数组):

int[][] x = new int[10][3]; // 2D array filled with zeros
int time = 25;
for (int[] row : x) {
    row[2] = time;
    time += 25;
}

这使用了一个增强的for循环,等价于:

int[][] x = new int[10][3]; // array filled with zeros
int time = 25;
for (int i = 0; i < x.length; ++i) {
    int[] row = x[i];
    row[2] = time;
    time += 25;
}

请注意,这将使左轮和右轮速度保持默认值零。

你当前的代码首先创建一个10x10的2D数组,但然后你的循环是重新分配每一行是一个新的10个元素的数组,所以你最终得到一个10x10的数组(这不是你想要的)。

注:使用3个元素的数组来表示三个不同的数据片段并不是一种好的编程风格(尽管它可以正常工作)。通过对下标使用符号常量可以略微改进。在类的顶部声明:

public static final int LEFT_WHEEL = 0;
public static final int RIGHT_WHEEL = 1;
public static final int DURATION = 2;

然后使用这些来索引每一行:

for (int[] row : x) {
    row[DURATION] = time;
    time += 25;
}

由于每行表示三个不同的属性,因此更好的方法是定义一个单独的类来包含数据:

public class Step {
    public int leftWheelSpeed;
    public int rightWheelSpeed;
    public int duration;
}

然后,你可以声明一个1D数组的Step对象,而不是2D数组的int值:

Step[] x = new Step[10];
int time = 25;
for (Step step : x) {
    step.duration = time;
    time += 25;
}

我不确定,但这可能是你在寻找什么?

import java.util.Arrays;
public class FinchArray {
    public static void main(final String[] args) {
        int[][] array = new int[3][10]; // initializing the array
        for(int i = 0; i < array.length; i++) { // outer for loop loops over first dimension
            int n = 25; // initializing the counter from 25 to 250
            for(int j = 0; j < array[i].length; j++) { // inner for loop loops over second dimension
                array[i][j] = n; // access the slots with the two indices i and j and give them the value of n
                n += 25;
            }
            n = 25; // reset n to 25 after finishing the inner for loop
        }
        System.out.println(Arrays.deepToString(array));
    }
}

输出:[[25, 50, 75, 100, 125, 150, 175, 200, 225, 250], [25, 50, 75, 100, 125, 150, 175, 200, 225, 250], [25, 50, 75, 100, 125, 150, 175, 200, 225, 250]]

相关内容

  • 没有找到相关文章

最新更新