Ghi mảng 2 chiều vào File

public class Takuzu {

    public static void main (String [] args){
        int i,j;
        int[][] a = new int[4][4];   
        try{
        FileOutputStream fos = new FileOutputStream(new File("D:\\input.txt"));
        //FileWriter writer = new FileWriter(new File("D:\\input.txt"));
        DataOutputStream dos = new DataOutputStream(fos);
        Scanner sc = new Scanner(System.in);
        for( i= 0;i<4;i++){
            for(j= 0;j<4;j++){
                a[i][j] = sc.nextInt();
                dos.write(a[i][j]);
            }
        }
        fos.close();
        dos.close();
        }catch (Exception e){};
    } 

chúc mừng năm mới mọi người, các anh chị cho em hỏi là đoạn code chạy ok nhưng mở file thì nó lại bị mã hóa là sao ạ. Em muốn ghi mảng 2 chiều vào file ạ. E cảm ơn

Bị mã hoá là thế nào hả bạn? Bạn show output được không?

em mở input.txt ra thì nó chỉ chứa mấy ô vuông thôi ạ. em paste lên nhưng nó không hiển thị ạ.

Chụp màn hình lên bạn ơi…

bạn tìm hiểu file nhị phân và file văn bản nha
Cái kí tự lạ lạ khi xem là do dữ liệu được ghi ở chế độ nhị phân, binary file. Về cơ chế lưu trữ khác với file văn bản, không có mapping bảng mã nên không đọc được đâu bạn

mình hiều rồi. Nhưng cho mình hỏi mình muốn ghi mảng 2 chiều vào file thì code như vậy đã đúng chưa vậy?

Chú ý khi in mỗi số trên 1 dòng thì bạn in thêm dấu cách vào và sau khi in hết 1 dòng thì bạn in thêm 1 dấu xuống dòng cho dễ nhìn nhé.

1 Like

bạn có thể ghi 1 phát cả cục obj đó, hoặc tách ra ghi từng phần tử mà

2 Likes

làm sao để có thể xuống dòng khi hết dòng thế ạ?

for (i ...) { // i là chỉ số dòng 
    for (j ...) // j là chỉ số cột
        print(a[i][j], ' ')

    print('\n') // hết vòng for j là in hết dòng
}
1 Like

Bạn dùng printWriter nhé, Tìm hiểu trên mạng là biết :slight_smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?