Đây là một vấn đề học đường mà tôi đang giải quyết cho lớp Java cơ bản của mình. Nhiệm vụ là viết một chương trình tạo ra ma trận 8 x 8 gồm các số nhị phân được tạo ngẫu nhiên và yêu cầu chương trình kiểm tra xem các cột nào (nếu có) đều là số 0 và liệu các đường chéo lớn và nhỏ có bao gồm các số 0 hay không. Đường chéo chính là đường chéo được hình thành từ góc trên bên trái đến góc dưới bên phải (tức làtên mảng[0][0]
ĐẾN tên mảng[8][8]
case) và đường chéo phụ là đường chéo từ góc trên bên phải đến góc dưới bên trái của ma trận.
Tất cả các chức năng của tôi đều hoạt động tốt ngoại trừ phần kiểm tra các đường chéo chính và phụ, nhưng tôi không hiểu tại sao nó không hoạt động. Điều tôi đang cố gắng làm là đếm số số 0 dọc theo đường chéo, và nếu số đó là 8 thì bạn có đường chéo gồm các số 0. Đây là hai cách tiếp cận của tôi đối với mảng chính và mảng phụ:
public static void majorDiagonal(int[][] board) {
số byte = 0;
đối với (int hàng = chiều dài của bảng - 1, offsetNumber = chiều dài của bảng - 1; hàng > 0; hàng--, offsetNumber--)
đối với (int cột = chiều dài bảng - 1; cột > 0; cột--)
nếu(bảng[hàng][offsetNumber] == 0) đếm++;
if(count == 8) System.out.println("Tất cả số 0 trên đường chéo chính");
}
public static void minorDiagonal(int[][] board) {
số byte = 0;
đối với (int hàng = chiều dài bảng - 1, offsetNumber = 0; hàng > 0; hàng--, offsetNumber++)
đối với (int cột = chiều dài bảng - 1; cột > 0; cột--)
nếu(bảng[hàng][offsetNumber] == 0) đếm++;
if(count == 8) System.out.println("Tất cả số 0 trên đường chéo nhỏ");
}
Một lỗi thú vị mà tôi gặp phải khi cố gắng tìm đường chéo chính bằng cách đếm ngược trong vòng lặp for là:
đối với (int hàng = 0; hàng < chiều dài bảng; hàng++)
đối với (int cột = 0; cột < chiều dài bảng; cột++)
nếu(bảng[hàng][hàng] == 0) đếm++;
Mã không hoạt động, nhưng nếu đường chéo toàn là 1 và 0, nó sẽ in "tất cả các số 0 trên đường chéo chính" mặc dù số lượng biến không phải là 8.
Hy vọng điều này có ý nghĩa, cảm ơn sự giúp đỡ của bạn.
Bạn đang làm mọi chuyện trở nên quá phức tạp. Hãy suy nghĩ về vị trí của các yếu tố bạn cần kiểm tra. Đối với đường chéo chính, các chỉ số là: (0,0), (1,1), (2,2), ..., (7,7). Bây giờ hãy tạm dừng, quan sát mô hình thay đổi và suy nghĩ: thực sự cần bao nhiêu vòng lặp để tạo ra một chuỗi như vậy? Các đường chéo phụ chỉ khác nhau ở bề ngoài: (0,7), (1,6), (2,5), ..., (7,0) - có thể viết lại là: (7-7, 7) , ( 7-6, 6), (7-5, 5), ... (7-0, 0). Một lần nữa, hãy xem xét bạn thực sự cần bao nhiêu vòng lặp.
Tôi là một lập trình viên xuất sắc, rất giỏi!