Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] Массив-таблица символов (char), из текстового файла 
:(
    Опции темы
kesan
Дата 29.11.2006, 04:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 29.11.2006

Репутация: нет
Всего: нет



здравствуйте!
в Java я полный новичок, поэтому испытываю некоторые трудности.
задача моя заключается в написании функции, которая считывает содержимое текстового файла вида:
xxxxxxxx
xx x   x x
x   x  xxx

и последующую запись каждого символа в одну из яйчеек двухмерного массива.

файл у меня считывается, количество строк и столбцов считается --> можно формировать массив и записывать в него символы, но у меня это не получается. ошибок компиляции не выдает, но и не работает корректно. знакомый предложил код с использованием ArrayList, но это мы еще не проходили. насколько я понимаю, символ можно записать при помощи метода charAt(i) ? 

код, предложенный знакомым:
Код

public static char[][] getLayoutFromFile( String layoutFileName ) 
    throws IOException
    {
    BufferedReader br = new BufferedReader(
        new FileReader(layoutFileName));
    ArrayList<char[]> rows = new ArrayList<char[]>();
    String line;
    while ((line = br.readLine()) != null) {
        rows.add(line.toCharArray());
    }
    br.close();
    return rows.toArray(new char[0][]);
}


то, что я на сегодняшний день в состоянии написать самостоятельно, и что не работает так, как хотелось бы.

Код

public static char[][] getLayoutFromFile( String layoutFileName ) 
    throws IOException {
    int r=0, c=0;
    FileReader f = new FileReader(layoutFileName);
    BufferedReader br = new BufferedReader(f);
    String line = br.readLine();
    c=c+line.length(); 
    while(line != null){
      line = br.readLine();
      r++;
    }  
     for (int i=0; i<r; i++){
           for (int j=0; j<c; j++){
             char m = line.charAt(i);
             matrix [i][j] = m;
             System.out.println(matrix[i][j] + " ");
           }} 
   br.close();
    f.close();
    return matrix;
  }

можно ли как-то модифицировать второй код, чтобы заставить его работать корректно ? 

Это сообщение отредактировал(а) Exception - 29.11.2006, 17:32
PM MAIL   Вверх
powerOn
Дата 29.11.2006, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 1
Всего: 159



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
shimopus
Дата 29.11.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 25.8.2006

Репутация: нет
Всего: 1



Если я правильно понял задачу, то ты просто не по той переменной считываешь. i у тебя это строка, а j - столбец. Поэтому надо читать 
Код

char m = line.charAt(j);

И еще, это все у тебя будет распечатывать в одну строчку. Если хочешь, чтобы распечатывалось точно так же, как и в файле,  надо ставить энтер при смене строки, т.е.:
Код

for (int i=0; i<r; i++){
           for (int j=0; j<c; j++){
             char m = line.charAt(j);
             matrix [i][j] = m;
             System.out.println(matrix[i][j] + " ");
           }
           System.out.println("\n");
} 

PM ICQ Skype GTalk   Вверх
Goganchic
Дата 30.11.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Возможно следует заменить System.out.println на System.out.print, иначе будет выводиться все не в одну строку, а в один столбец, а если еще и \n выводить, то в один столбец посимвольно, причем через строку.
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0440 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.