Chưa hiểu cách sửa lỗi ArrayIndexOutOfBoundsException

import java.util.*;
import java.util.Scanner;

public class java4 {
   public static void main(String args[]) {
      Scanner scanner = new Scanner(System.in);
      int num = scanner.nextInt();
      int array[] = new int[num];
      Arrays.fill(array,0);
      int cou;
      do{
         for (cou = 0; cou < num; cou++)
            System.out.print(array[cou]);
         cou = num;
         while ((cou >=0) && (array[cou] == 1))
               cou--;
         if (cou > 0){
            array[cou] = 1;
            Arrays.fill(array,cou+1,num,0);
            }
         }while (cou == 0);

   }
}

Untitled

Chỗ này bị out ra ngoài mảng, sửa lại cou = num - 1.

cou = num;
while ((...) && (array[cou] == 1)
    ...

Hình như bài này là thuật toán sinh trong sách thầy Hoàng phải không? Trong đó viết bằng pascal mà pascal mảng bắt đầu là 1, nên trong java phải sửa lại vài chỗ để tránh vượt ra ngoài mảng.
Bên cạnh đó các điều kiện dưới của bạn phải là cou >= 0. Bạn xem lại.

5 Likes

e cảm ơn :slight_smile:

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