void方法中使用的void方法的组成? (JAVA)

时间:2016-05-15 15:51:42

标签: java arrays for-loop matrix void

我在两周前开始学习Java,所以请不要犹豫。 我正在用二维数组(图片)做这个程序,我想要旋转90度(已经完成,测试,它工作)和180.我的方法是无效的,我想使用90度一个在180度1中两次(组合?),但它不起作用。

这是我的90方法:

private boolean reserveSeat(int selectedRow, int selectedSeat) {
    if (show.isSeatReserved(selectedRow, selectedSeat)) {
        System.out.println("Sorry, that seat has already been booked");
        return false;
    } else {
        show.reserveSeat(selectedRow, selectedSeat);
        setRowNumber(selectedRow);
        setSeatNumber(selectedSeat);
        System.out.println("This seat has now been booked.");
        return true;
    }
}

有没有办法可以做到这一点?使用void函数?

提前致谢!

4 个答案:

答案 0 :(得分:3)

方法rotate90()没有参数。实际上这不是正确的方法。

第一种方法是写出来。

rotate90();
rotate90();

或使用for-cycle

for (int i=0; i<2; i++) {
    rotate90();
}

然而,这是一种通过一种方法将其旋转多少次的方法:

public void rotate90(int n) {
    for (int i=0; i<n; i++) {
        for (int r=0; r<w; r++) {
            for (int c=0; c<h; c++) {
                imageMatrix[c][w-r-1] = imageMatrix[r][c];
            }
        }
    }

然后是rotate180()方法:

public void rotate180(){ 
    rotate90(2); // rotate by 90 two times
}

答案 1 :(得分:2)

您只需要调用该方法两次。您可以做的是使用返回值rotate90()来调用rotate90,这是您建议的代码正在执行的操作,因为该方法不会获取参数或返回值。

答案 2 :(得分:2)

您的rotate90()正在直接处理全局变量,因此您的rotate180()也会如此。

public void rotate180(){ 
    rotate90();
    rotate90();
}

但是,我建议你使用一些参数并返回值,如果严格必要,只使用全局变量。另外,我不确定你的算法是否正确,我会这样做。

public static int[][] rotate90(int[][] matrix){
    int [][] newMatrix = new int[matrix[0].length][matrix.lenght];

    for (int r = 0; r < w; r++) {
         for (int c = 0; c < h; c++) {
             newMatrix[c][w-r-1] = matrix[r][c];
         }
    }
    return newMatrix;
}

public static int[][] rotate180(){ 
    return rotate90(rotate90()); 
}

无需将它们设置为static,但由于它们不需要对象工作,因此您可以将它们移至Utils类或其他内容。

答案 3 :(得分:1)

如果您只想调用一次,可以将其作为参数传递

public void rotate90nTimes(int n){
    for (int times = 0; times < n; times++) {
        for (int r = 0; r < w; r++) {
             for (int c = 0; c < h; c++) {
                 imageMatrix[c][w-r-1] = imageMatrix[r][c];
             }
        }
    }
}

P.S .: 如果你想将它用作rotate90(rotate90),你需要返回矩阵而不是使虚函数为空。