В статьях указано, что вывод двумерного массива выглядит так:
for (int i = 0; i < chars.length; i++) {
                for (int j = 0; j < chars[i].length; j++) {
Здесь в правильном решении, да и где-то ещё попадалось:
for (int i = 0; i < chars.length; i++) {
                for (int j = 0; j < chars[0].length; j++) {
Зачем указывать [0] вместо [i] ?