Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открыть файл, загрузить в массив, нарисовать, Открыть файл, загрузить в массив, нарисо 
:(
    Опции темы
FoxWMulder
Дата 23.11.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ну никак не могу разобраться. Надо: 1. открыть файл 2. загрузить его в массив 3. из массива нарисовать
Не знаю как загрузить в массив, у меня сейчас грузит просто в лист
Код

  if (readfile == 0) {
            readfile = 1; 
       
           StreamConnection connection; 
           InputStream is;
           
           try {
      connection = (StreamConnection)Connector.open("file:///c:/other/1.txt");
      
      is = connection.openInputStream();
      int ch = is.read(); 
      StringBuffer tmpStr = new StringBuffer();

      connection.close();

  
    
while(ch != -1) {
   

if(ch>128)
ch +=0x350; // Перевод из Win1251 в Unicode, это если хочется видеть русские строки
if(ch==0xD || ch==0xA){

if(tmpStr.length() == 0){
    if (ylist <798) {//310
      list.append(" ", null);
    }
    ylist = ylist + 1;
}//\lentgh

if(tmpStr.length() > 0){
    if (ylist <798) {//310
      list.append(tmpStr.toString(), null);
    }
    ylist = ylist + 1;
    tmpStr.setLength(0);
}//\lentgh
}
else{
tmpStr.append((char)ch);
}
try {
ch = is.read();
} catch (Exception E) {
ch = -1;
}
}
      

if(tmpStr.length() > 0){ // на случай, если после последней строки нет перевода строки
    if (ylist <798) {
list.append(tmpStr.toString(), null);
    }
  
    
    ylist = ylist + 1;
}//length
     
      
      
try {
is.close();
} catch (Exception E) {
}
tmpStr = null;
      

        } catch (Exception ex) {
          }
       
             

  } //readfile 


причем в этом коде, я мало чего понимаю, вроде он грузит по символьно ( зачем? ) - можно ли сделать загрузку по строчно?

Файл имеет к примеру 20 строчек, надо их вставить в массив, по принципу - пять строчек в первый столбец, следующие пять строчек во второй столбец и так далее.

У меня сейчас чикл рисует из листа ( у меня не получилось сделать массив )

Код

for (int x2 = 0; x2 <11; x2++) {//10       
for (int y2 = 1; y2<5; y2++) {//31//32 
while (y2 < 10)
{
  g.drawString(list.getString(ylist2),x2*80-150*scrx,y2*20+50-200*scry,0);
      
    ylist2 = ylist2 + 1;
}    
}


вроде все правильно, но работает он совершенно не правильно: две строчки в одном столбце, две в следующим и тд, а надо по 5 строчек.
В итоге толи загрузка не правильная, толи в отрисовке.

После решения этой проблемы, мне надо сделать еще и выбор файла.

Если кто может - подскажите, только популярно ибо я только начал в java2me разбираться, на Pascal'е программирую еще, но java и паскаль как то мало схожи
PM MAIL   Вверх
eugine_s
Дата 23.11.2007, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Код


           StreamConnection connection; 
           InputStream is;
           connection = (StreamConnection)Connector.open("file:///c:/other/1.txt");


Нужно использовать FileConnection API (JSR-75)

Ты бы в коде сначала разобрался в своем: а то у меня что-то есть, я не понимаю почему оно вообще как-то работает, но вы мне подскажите.

А вообще еще лучше сначала взять толковую книжку для начинающих по "обычной" джаве и разобраться там с азами.


Цитата(FoxWMulder @  23.11.2007,  16:17 Найти цитируемый пост)
причем в этом коде, я мало чего понимаю, вроде он грузит по символьно ( зачем? ) - можно ли сделать загрузку по строчно?


Например тут: он грузит побайтно, а потом "переделывает". Этот вопрос описан в байтовых и символьных потоках (один из первых разделов в любой книге по j2se)


Если же совет по твоему коду давать, то попробуй сначала нормально загрузить твой файл и его содержимое загнать в строку, а уже распарсить строчку - это проблем не составит.
То есть, сначала считай файл в строку и сделай вывод в командную строку (на эмуляторе) этой строки и посмотри правильно ли считался твой файл.


PM MAIL   Вверх
FoxWMulder
Дата 23.11.2007, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Нужно использовать FileConnection API (JSR-75)

как? InputConnection connection; ? смысл не поменялься, а через эмулятор - у меня файл вообще не открываеться ( появляеться запрос на открытие и все ), только с мобильника

Цитата

То есть, сначала считай файл в строку и сделай вывод в командную строку (на эмуляторе) этой строки и посмотри правильно ли считался твой файл.

если бы еще знать КАК?  smile 

PM MAIL   Вверх
eugine_s
Дата 23.11.2007, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  23.11.2007,  19:20 Найти цитируемый пост)
как? InputConnection connection; ? смысл не поменялься, а через эмулятор - у меня файл вообще не открываеться ( появляеться запрос на открытие и все ), только с мобильника


Что значит смысл не меняется? 
Если уже направление не ясно, то прямая ссылка поможет?
http://www.mobilab.ru/articles/79/

В статье есть как читать из файла (хотя это у тебя у самого есть в коде, но ты наверное еще не знаешь об этом?  smile  )
PM MAIL   Вверх
FoxWMulder
Дата 23.11.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Дык вроде читает, только...
все таки у меня не правильно читает из файда, вот пример
Файл:
"
1
2
3

4
5

6
7
"

Она все читает, но пропускает пустые строки



Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:05
PM MAIL   Вверх
eugine_s
Дата 23.11.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  23.11.2007,  20:00 Найти цитируемый пост)
Дык вроде читает, только...
все таки у меня не правильно читает из файда, вот пример



1. Скажи, а что программа должно делать с пустой строкой? 

2. Что в этом куске кода делается?

Код

if(ch>128) ch +=0x350; // Перевод из Win1251 в Unicode, это если хочется видеть русские строки
if(ch==0xD || ch==0xA){
if(tmpStr.length() == 0){
    if (ylist <798) {//310
      list.append(" ", null);
    }
    ylist = ylist + 1;
}//\lentgh
if(tmpStr.length() > 0){
    if (ylist <798) {//310
      list.append(tmpStr.toString(), null);
    }
    ylist = ylist + 1;
    tmpStr.setLength(0);
}//\lentgh
}


3. Что значит пустая строка? В файле нет пустой строки, там есть символы. Так какой код "пустой строки"?

4. Опять же по коду приведенному выше. Что это за магическое число 798 ?
PM MAIL   Вверх
FoxWMulder
Дата 23.11.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



мда неправ. 798 - размер файла в строках, по идеи это условие не нужно, надо просто идти до конца файла, сейчас попробую убрать. - ну точно ничего и не поменялось.

а пустая строка, это я имею ввиду - пустая с точки зрения человека - без символов ( пробел ? )
вот так файл выглядит для меня:
"
1
2
3

4
5

6
7
"
а она читает:
"
1
2
3
4
5
6
7
"


Цитата

Что в этом куске кода делается?


черти его знает... ну вообщем я так понимаю, читаем строку если она не пустая ( >0 ) то заносим в список бред... smile 
но если убрать условие >0 то она вообще както хитро разбивает строки

теперь код выглядит так
Код

while(ch != -1) {
 if(ch>128)  
  ch +=0x350; // Перевод из Win1251 в Unicode, это если хочется видеть русские строки
  if(ch==0xD || ch==0xA){
      if(tmpStr.length() > 0){
          list.append(tmpStr.toString(), null);
          ylist = ylist + 1;
          tmpStr.setLength(0);
     }//\lentgh
  }
  else{
      tmpStr.append((char)ch);
  }
try {
ch = is.read();
} catch (Exception E) {
ch = -1;
}
}


опять же пусты строки для нее не существуют

я не понимаю ( счастье так близко ) просто надо узнать что строка без символов ( вообще, там даже пробела нету ) - почему она его пропускает - ну фиг с ней, но узнать это же как то можно
вот файл из HEX-вида
310D 0A0D 0A32 0D0A 330D 0A34

он же только по-человечески
"
1

2
3
4
"

следовательно "0A0D" = пустая строка

у меня в коде есть "if(ch==0xD || ch==0xA){" - что определяет конец строки
как из этого определить пустую строку?!

Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:44
PM MAIL   Вверх
FoxWMulder
Дата 23.11.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я убьюсь с это джавой, разные файлы читает по разному - ну не понимаю
кроме по байтного чтения не ужели нет другого способа

а там пробелы вот такую строчку она и читает нормально, а вообще без символов... пропускает

Это сообщение отредактировал(а) FoxWMulder - 23.11.2007, 20:59
PM MAIL   Вверх
eugine_s
Дата 24.11.2007, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  23.11.2007,  20:56 Найти цитируемый пост)
я убьюсь с это джавой, разные файлы читает по разному - ну не понимаю
кроме по байтного чтения не ужели нет другого способа 


Для кого тут я давал ответы???

Смотрим первый пост: потоки бывают байтовые и символьные.

Слушай, как ты хочешь написать программу на j2me если совсем не имеешь представления о j2se?

Как бы это твое личное дело, я тебе могу дать ответ, но прежде чем задать следующий вопрос прочитай ХОТЯ БЫ ВОТ ЭТУ СТАТЬЮ: 
http://skipy.ru/philosophy/learning.html
там как раз про тебя написано.
Заодно и остальные статьи прочитай: много полезного найдешь.


Пустая строка - это для тебя и меня текстовый редактор показывает пустую строку, а для файла это только символ. Вопрос звучал так: Так какой код "пустой строки"?
Правильный ответ: 13 10 (заметь это два символа, символ окончания строки(Enter) и символ перевода каретки)

Теперь скажи какое значение имеют эти коды (13 и 10) в 16-тиричном формате (кстати, как 16-тиричный формат в java записывается?)

Ответ: A и D
13 = 0xD 
10 = 0xA

Смотрим теперь в код:

Код

while(ch != -1) { // выполняем цикл пока ch != -1, -1 появится когда будет достигнут конец файла

 if(ch>128)  ch +=0x350; // Перевод из Win1251 в Unicode, это если хочется видеть русские строки
//коментарий кто-то подписал, а значение все равно не понятно, так ведь?

  if(ch==0xD || ch==0xA){ // ООО, вот наши коды 13 и 10 !!!, что же мы с ними тут делаем? 
      if(tmpStr.length() > 0){ //так если строка tmpStr не пустая, то вот что мы делаем (кстати, а что это за tmpStr? зачем она?)
          list.append(tmpStr.toString(), null); // в list добавляем нашу строку
          ylist = ylist + 1; // тут я так понимаю увеличили счетчик записаных строк в list?
          tmpStr.setLength(0); // тут сделали tmpStr пустым
     }//\lentgh
//на этом все больше ничего не делается с кодами 13 и 10
  }
  else{
      tmpStr.append((char)ch); // если встретился символ не равный 13 и 10, то просто записываем этот символ в tmpStr
  }
try {
ch = is.read(); // что тут делается? читаем байт из потока и заносим это значение в ch
} catch (Exception E) {
ch = -1; //собственно условие выхода из цикла.
}
}


Что должна делать программа если встретила "пустую строчку" (на самом деле символ окончания строки)?
Твой пример:
1
2
3

4

В файле это выглядит вот так:  1\n\r2\n\r3\n\r\n\r4\n\r
( \n - код 13, \r - код 10)
твой цикл обработки считал файл и начинает обрабатывать байты: 
1 - записал в tmpStr
\n - выполняется условие  if(ch==0xD || ch==0xA) : записываем из tmpStr в list
\r -  выполняется условие  if(ch==0xD || ch==0xA) : но tmpStr - пустой, никаких действий не происходит
2 - записал в tmpStr
\n - выполняется условие  if(ch==0xD || ch==0xA) : записываем из tmpStr в list
\r -  выполняется условие  if(ch==0xD || ch==0xA) : но tmpStr - пустой
3 - записал в tmpStr
\n - выполняется условие  if(ch==0xD || ch==0xA) : записываем из tmpStr в list
\r -  выполняется условие  if(ch==0xD || ch==0xA) : но tmpStr - пустой
//собственно дальше идет твоя "пустая строка"
\n - выполняется условие  if(ch==0xD || ch==0xA) : НО tmpStr - пустой, никаких действий не происходит!!!
\r -  выполняется условие  if(ch==0xD || ch==0xA) : опять же tmpStr - пустой, никаких действий не происходит

4 - записал в tmpStr
\n - выполняется условие  if(ch==0xD || ch==0xA) : записываем из tmpStr в list
\r -  выполняется условие  if(ch==0xD || ch==0xA) : но tmpStr - пустой
......

Если не понял, то лучше сядь и разберись, иначе ..... программирование - не для тебя.


Вот теперь скажи, кто по разному читает файлы? Java? или ты не понимая сути, берешь чужой код и не разобравшись (да даже не познакомившись с языком программирования) просишь совета...
PM MAIL   Вверх
shomer
Дата 24.11.2007, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



eugine_s спасибо за ссылку на skipy.ru

Это сообщение отредактировал(а) shomer - 24.11.2007, 02:12
PM MAIL   Вверх
shomer
Дата 25.11.2007, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все таки свербит
Код

byte prev_ch;
while(ch != -1)              //  а что есть ch до is.read();                    
 {
       if(ch>128)  
           ch +=0x350;                        // ?
       if(ch==0xD || ch==0xA)
       {
            if (tmpStr.length() > 0)
            {
                 list.append(tmpStr.toString(), null);
                 ylist++;
                 tmpStr.setLength(0);
            }
            else if ( prev_ch==0xA)
            {
                 list.append( "", null);      // ?
                 ylist++;
            } 
       }
       else
           tmpStr.append((char)ch);
       prev_ch = ch;
       try { ch = is.read();
       } catch (Exception E) { ch = -1;}

Хотя тут явно надо бы - читаешь в буфер, обрабатываешь его
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(shomer @  25.11.2007,  22:48 Найти цитируемый пост)
Все таки свербит


То есть?


Цитата(shomer @  25.11.2007,  22:48 Найти цитируемый пост)
а что есть ch до is.read(); 


Код

int ch = is.read();


или я вопрос не понял

Код

       if(ch>128)  ch +=0x350;                        // ?


Посмотри коды в Кирилице (Cp1251) русских буков и посмотри на этиже коды в Unicode.


Цитата(shomer @  25.11.2007,  22:48 Найти цитируемый пост)
Хотя тут явно надо бы - читаешь в буфер, обрабатываешь его


Зачем? Можно и без этого.

PM MAIL   Вверх
FoxWMulder
Дата 26.11.2007, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Точно вспомнил конец строки-перевод строки. eugine_s вот теперь ты мне расписал все подробно и я понял в чем моя ошибка и чего надобно собственно сделать. shomer твой код работает правильно только "byte prev_ch;" заменил на "int prev_ch = 0;" у меня же "ch" - integer; иначе она не хочет присваивать.

Цитата

Смотрим первый пост: потоки бывают байтовые и символьные.


Как юзать символьные?

А почему надо начинать именно с java2se а не me?

Интересно "String mas[];" - компилит, а "String[] mas = new string[10];" - не компилит, почему? собственно мне двухмерный массив нужен, но тут и одномерный не хочет.


Это сообщение отредактировал(а) FoxWMulder - 26.11.2007, 16:13
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 16:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  26.11.2007,  15:52 Найти цитируемый пост)
заменил на "int prev_ch = 0;" у меня же "ch" - integer; иначе она не хочет присваивать. 


Про явное приведение типов не слышал наверное.

http://www.ssga.ru/metodich/web_diz/8/6.html

Код

int ch = 0;
byte pre_ch = 0;

prev_ch = (byte) ch;



книги, книги и еще раз книги (книги можна заменить на доки).
PM MAIL   Вверх
FoxWMulder
Дата 26.11.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



слышал... на паскале  smile  inttostr etc
только тогда она тормозиться на "else if ( prev_ch==0xA)", правильно это в integer а теперь надо в byte, ладно работает и хорошо
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  26.11.2007,  15:52 Найти цитируемый пост)
Как юзать символьные?

А почему надо начинать именно с java2se а не me?


Сам ответил на свой вопрос: чтобы не было вопросов типа: приведения типов? как юзать символьные потоки?


Цитата(FoxWMulder @  26.11.2007,  15:52 Найти цитируемый пост)
Интересно "String mas[];" - компилит, а "String[] mas = new string[10];" - не компилит, почему? собственно мне двухмерный массив нужен, но тут и одномерный не хочет.


Java чувствительна к регистру буквы.

Код


String[] mas = new String[10];

PM MAIL   Вверх
FoxWMulder
Дата 26.11.2007, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Java чувствительна к регистру буквы.

а черт... тьфу ты постоянно забываю про это, теперь работает

Статья "Знакомство с ограничениями FileConnection API" не очнь то помогает, случаем библиотеку в проект никакую нинадо импортировать, а то эмулятор стоит K750 но вот это к примеру компилить не хочет
Код

import javax.microedition.io.Connector.file.read;
import javax.microedition.io.Connector.file.write;

только так
Код

import javax.microedition.io.Connector.*;


соотвественно дальше не проходит 
Код

FileConnection fc = (FileConnection)Connector.open("file:///c:/");             


Это сообщение отредактировал(а) FoxWMulder - 26.11.2007, 16:39
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Код

import javax.microedition.io.Connector.file.read;
import javax.microedition.io.Connector.file.write;


Что это? В java классы не называются с маленьких букв.

Это скорее всего то что нужно в джад добавить что бы не было запросов от JVM на чтение и запись.

А библиотеку конечно нужно добавить: 

%wtk_home%\lib\jsr75.jar

Чем проект собираешь? WTK? Если да, то в Settings - первая вкладка:
Target Platform: Custom
поставить галочку возле PDA Profile for J2ME (JSR 75)


В следующий раз приводи текст ошибки.

Это сообщение отредактировал(а) eugine_s - 26.11.2007, 16:59
PM MAIL   Вверх
FoxWMulder
Дата 26.11.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата

Что это? В java классы не называются с маленьких букв.

как не называються а вот это у меня работает:
Код

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*; 
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector.*;


не компилиться я имел ввиду в Sun ONE Studio 4
в WTK  библиотеку добавил

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

for (int y2 = 0; y2 < 33; y2++) {//31//32  
    g.drawString(mas[3][y2],x2*80-150*scrx,y2*12+50-200*scry,0);    
}

подставляю любое число вместо тройки она выдает нужный столбец все правильно
но вот так уже не работает, просто ничего не выводит

Код

for (int x2 = 1; x2 < 8; x2++) {//10       
for (int y2 = 0; y2 < 33; y2++) {//31//32  
    g.drawString(mas[x2][y2],x2*80-150*scrx,y2*12+50-200*scry,0);    
}
}

в чем может быть проблема


Цитата

В следующий раз приводи текст ошибки.


текст ошибки

p03.java [24:40] cannot resolve symbol
symbol  : class file  
location: class javax.microedition.io.Connector
import javax.microedition.io.Connector.file.read;
1 error
Errors compiling p03.


Это сообщение отредактировал(а) FoxWMulder - 26.11.2007, 17:18
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  26.11.2007,  17:05 Найти цитируемый пост)
как не называються а вот это у меня работает


назвать ты можешь как хочешь класс и с маленькой и с большой буквы, но есть стандарт джава : 
- В названиях классов первая буква большая ( class Test)
- Если в название состоит из двух и более слов, то каждое слово начинается с большой буквы (FoxTest)
И как ты думаешь, если Sun вводит эти правила джава, и разрабатывает WTK то в их классах будут такие ошибки с названиями классов.

Правило не обязательно, но все если хочешь быть хорошим программером, то лучше писать по правилам джава. Про это можно вот тут прочитать:
http://skipy.ru/philosophy/cqComponents.html

А скажика мне javax.microedtion. - это классы ???? smile или все таки пакеты? а вот пакеты как раз и нужно с маленькой буквы называть.

Цитата(FoxWMulder @  26.11.2007,  17:05 Найти цитируемый пост)
текст ошибки

p03.java [24:40] cannot resolve symbol
symbol  : class file  
location: class javax.microedition.io.Connector
import javax.microedition.io.Connector.file.read;
1 error
Errors compiling p03.


это код какой ошибки??? которая сейчас или которая была перед этим?

Добавлено через 5 минут и 18 секунд
Цитата(FoxWMulder @  26.11.2007,  17:05 Найти цитируемый пост)
запихнул в массив, правда не правильно немного ну да ладно


напиши правильно, и если потом не получится будем разбираться в чем проблема.

Тут лучше весь код привести + текст ошибки.

PM MAIL   Вверх
FoxWMulder
Дата 26.11.2007, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



тэк, 
Цитата
запихнул в массив, правда не правильно немного ну да ладно
 тоесть я просто сделал двойную работу
сначало прочитал файл

Код

while(ch != -1)              //  а что есть ch до is.read();                    
 {
       if(ch>128)  
           ch +=0x350;                        // ?
       if(ch==0xD || ch==0xA)
       {
            if (tmpStr.length() > 0)
            {
                 list.append(tmpStr.toString(), null);
                 ylist++;
                 tmpStr.setLength(0);
            }
            else if ( prev_ch==0xA)
            {
                 list.append( "", null);      // ?
                 ylist++;
            } 
       }
       else
           tmpStr.append((char)ch);
       prev_ch = ch;
       try { ch = is.read();
       } catch (Exception E) { ch = -1;}
}


потом из полученного списка забил массив
Код


      mas_x = 0;//13
      mas_y = 0;//34
for (int y3=0; y3 < 848; y3++) {//848
    mas[mas_x][mas_y] = list.getString(y3);
    if (mas_y < 34) {
        mas_y = mas_y + 1;
    }
    if (mas_y == 34) {
        mas_y = 0;
        mas_x = mas_x + 1;
    }
}     
      


вот до этого момента все похоже работает нормально

а вот дальше вообще ничего не рисует
Код

for (int x2 = 1; x2 < 8; x2++) {//10       
for (int y2 = 0; y2 < 33; y2++) {//31//32  
    g.drawString(mas[x2][y2],x2*80-150*scrx,y2*12+50-200*scry,0);    
}
}


Это сообщение отредактировал(а) FoxWMulder - 26.11.2007, 19:24
PM MAIL   Вверх
eugine_s
Дата 26.11.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



848 а может 798 (или сколько там было)?

что вообще это за магические числа: 848, 34, 80, 150, 12, 50, 200 ?

что значит вообще не рисует? 
просто ничего не выводит на экран или бросает Exception?
Если не выводит на экран проверь чтобы выводилось в консоль: System.out.println();
Если Exception - телепаты в отпуске. Где текст ошибки.

Кстати а что такое: list - это экземпляр класса List????  smile . Если да, то он же сам Displayble т.е. его можно отображать на экране, зачем ты его используешь в качестве контейнера строк? Ведь строки ты потом хочешь отобразить на Canvas-e. Используй уже хотя бы java.util.Vector();

Приведи полное задание того что ты хочешь сделать: считать файл и т.д. 

и приаттач так же файл с исходниками.

Код


mas_x = mas_x + 1;

// вот так проще

mas_x++;



PM MAIL   Вверх
W0LF
Дата 26.11.2007, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

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



Ну, теперь дебажить нужно. 
Проходим по массивам, смотрим че у нас в mas[x2][y2], если то, что нужно, то смотрим на координаты, че с ними делается, может просто рисуется где-то за экраном.
попробуй заменить
Код

g.drawString(mas[x2][y2],x2*80-150*scrx,y2*12+50-200*scry,0);

на 
Код

g.drawString(mas[x2][y2], x2*80-150*scrx, y2*12+50-200*scry, Grpaphics.LEFT | Graphics.TOP);



--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
FoxWMulder
Дата 26.11.2007, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 smile 
PM MAIL   Вверх
FoxWMulder
Дата 27.11.2007, 03:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

      int mas_x = 1;
      int mas_y = 1;
      
      for (int y3 = 3; y3 < 374; y3++) { // !! если ставлю 100 то все работает, больше - не работает
          mas[mas_x][mas_y] = list.getString(y3);
          mas_y = mas_y + 1;
         // if (mas_y<33) {
         //     mas_y = mas_y + 1;
         // }
          if (mas_y == 34) {
              mas_y = 1;
              mas_x = mas_x + 1;
          } 
      }
      
  ylist2 = 3;//3
  
  
  
for (int x2 = 1; x2 < 11; x2++) {//10
    for (int y2 = 1; y2 < 34; y2++) {//31//32  
        //g.drawString(mas[x2][y2],x2*80-150*scrx,y2*12+50-200*scry,0); 
        g.drawString(mas[x2][y2],x2*20-150*scrx,y2*12+50-200*scry,0); 
  //g.drawString(mas[1][5],20,20,0); 
    }
}


но белее менее работает, дорабатывать будь потом, надо вообще сесть и на бумаге прикинуть как все должно работать
а сейчас если честно сказать меня уже больше волнует как сделать выбор файла, вы уже во многом мне помогли если расскажите по пунктам как реализовать выбор буду вААбще очень признателен

Цитата

что вообще это за магические числа: 848, 34, 80, 150, 12, 50, 200 ?

да это все к разговору о размере файла

Цитата

что значит вообще не рисует? 

да ет ошибка какаято в коде она мне не выдает ошибки просто не рисует и все smile

Цитата

Кстати а что такое: list - это экземпляр класса List????

ну да 
Код
List list = new List("Меню", List.IMPLICIT);
 "Меню" - эт название его чтоли? для чего...
вообще лучше наверно прямо в массив загонять, только файл над по частям в разные массив

Код
mas_x = mas_x + 1;
 так привычней, пока чтоб не путаться стараю так

Это сообщение отредактировал(а) FoxWMulder - 27.11.2007, 04:17
PM MAIL   Вверх
eugine_s
Дата 27.11.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  27.11.2007,  03:38 Найти цитируемый пост)
меня уже больше волнует как сделать выбор файла


Я так понял, что тут: один вопрос - одна тема.
Но перед этим пройтись поиском по похожим темам.


Цитата(FoxWMulder @  27.11.2007,  03:38 Найти цитируемый пост)
да это все к разговору о размере файла


Нет. Это к разговору о "взятии чужого кода".
У тебя в коде, когда идет чтение из файла, то не нужно знать его размер - это скорее всего ты сам уже дописал.



Цитата(FoxWMulder @  27.11.2007,  03:38 Найти цитируемый пост)


Кстати а что такое: list - это экземпляр класса List????

ну да 


Объясняю подробнее. List - класс который можно сделать Display.getDisplay().setCurrent(List) - т.е. его можно отобразить на экране. Он содержит много методов и только несколько из этих методов работы со строками. И ты очень нерационально (не правильно!) используешь для своей цели List.


Цитата(FoxWMulder @  27.11.2007,  03:38 Найти цитируемый пост)
"Меню" - эт название его чтоли? для чего...

 smile 


PM MAIL   Вверх
FoxWMulder
Дата 27.11.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



везде пишут как открыть файл но нигде как выбрать файл
http://forum.vingrad.ru/faq/topic-158027.html
http://forum.vingrad.ru/forum/topic-63746/...tion/index.html

ты мне объясни почему если я добавляю вот такую строку
Код
import javax.microedition.io.Connector.file.read;

то она мне выдает ошибку

p03.java [24:40] cannot resolve symbol
symbol  : class file  
location: class javax.microedition.io.Connector
import javax.microedition.io.Connector.file.read;
1 error
Errors compiling p03.

Цитата
Нет. Это к разговору о "взятии чужого кода".
 Как по твоему я вообще должен учиться этому языку, теория конечно нужна и я признаю что мне ее не хватает, но если я сейчас буду изучать одну теорию - у меня всякое желание пропадет вообще заниматься этим


Это сообщение отредактировал(а) FoxWMulder - 27.11.2007, 16:37
PM MAIL   Вверх
FoxWMulder
Дата 27.11.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



как перевести из String в Integer
PM MAIL   Вверх
eugine_s
Дата 27.11.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  27.11.2007,  16:26 Найти цитируемый пост)
везде пишут как открыть файл но нигде как выбрать файл


javax.microedition.io.file.FileSystemRegistry - можно получить список root каталогов.
каталог - тот же файл

javax.microedition.io.file.FileConnection.isDirectory()  - проверка на каталог.

Получил список root-каталогов, добавил в list

c:/
e:/

пользователь нажал выбрать (например c:/)
удалил все записи из list
добавил содеждимое ФАЙЛа c:/ (FileConnection.list()  в list + добавил ".." - для возврата на уровень выше.

вообщем так дальше.....
Думай сам.



Цитата(FoxWMulder @  27.11.2007,  16:26 Найти цитируемый пост)
ты мне объясни почему если я добавляю вот такую строку
    
import javax.microedition.io.Connector.file.read;

то она мне выдает ошибку


Ответ уже был дан: в Java классы не начинаются с маленькой буквы (кроме классов начинающих программеров). Отсюда выход какой? Такого класса просто нет.



Цитата(FoxWMulder @  27.11.2007,  16:26 Найти цитируемый пост)
Как по твоему я вообще должен учиться этому языку, теория конечно нужна и я признаю что мне ее не хватает, но если я сейчас буду изучать одну теорию - у меня всякое желание пропадет вообще заниматься этим


Обычно теория + практика. Берешь книгу. Прочитал главу - написал программку. и так далее.

Почему тебе тут должны объяснять то что есть в ЛЮБОЙ книге по java? 

Цитата(FoxWMulder @  27.11.2007,  18:05 Найти цитируемый пост)
как перевести из String в Integer 


"Зачем мне теория", да?

Java это в первую очередь - ООП, а потом уже язык программирования. Из тебя не будет программера Java, если ты не знаешь и не используешь в Java ООП. 
А ты не то, что ООП не знаешь, так ты даже основы Java не прочитал.

PM MAIL   Вверх
shomer
Дата 27.11.2007, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Извиняюсь за грубость но - Пора эту бодягу заканчивать - сильно смахивает на ясли.. 
PM MAIL   Вверх
FoxWMulder
Дата 28.11.2007, 02:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



довольно подробно и доходчиво... попробую конечно разобраться... но может конкретный код приведешь smile
 и если я уже всем надоел, обещаю что после того как разберусь с выбором фаила - закрою эту тему

Это сообщение отредактировал(а) FoxWMulder - 28.11.2007, 02:53
PM MAIL   Вверх
FoxWMulder
Дата 30.11.2007, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ну плиз.... последние наставления  smile 

Это сообщение отредактировал(а) FoxWMulder - 30.11.2007, 02:55
PM MAIL   Вверх
eugine_s
Дата 30.11.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

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



Цитата(FoxWMulder @  30.11.2007,  02:55 Найти цитируемый пост)
ну плиз.... последние наставления


Какие наставления.
Все уже было сказано в какую сторону копать, идеи по реализации были даны. Дальше можно только исходники выложить, но я например не вижу в этом смысла - зачем мне за кого-то писать приложение? Это уже ближе к коммерческому решению вопроса - с этим в личку обращайся.

Или что-то конкретное интересует? (под конретным имеется ввиду: у меня в таком-то месте не получается вот такое-то, почему подскажите).  На такое можно ответить, иначе я уже написал - коммерческое предложение, можем обсудить по почте.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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