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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение массивов, Из строки из файла 
V
    Опции темы
_LEM_
Дата 14.3.2007, 12:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хотелось бы узнать о этих способах в J2ME.
Т.к в j2se нашёл только StringTokinezer и то грамозкий способ =)
В j2me вообще ни чего путного не нашёл.

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


alexander lonsky
***


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

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



smile Читаем файлик, парсим, загоняем все в массив. Просто и сердито smile


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


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

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



_LEM_, я же тебе на другом форуме готовый метод привёл, бери и пользуй smile)
Ну, нету в j2me ничего похожего на StringTokenizer, понимаешь, НЕТУ!!!
http://forum.sources.ru/index.php?showtopic=173254

Если тебе нужно именно так, как организован класс StringTokenizer в J2SE, то возьми мой метод за основу и сделай свой собственнй класс. (где-то у меня был такой уже говтовый, но боюсь искать буду дольше чем его писать) Главное не забудь сделать implemets Enumeration для своего класса. 

Если с Vector работать нельзя, не хочешь, не умеешь (нужное подчекнуть), то можешь привести всё это дело в массив

String s="aaa,,bbb,ccc,,,";
Vector vec = stringTokenizer(s,",,");
String strArray[] = new String[vec.size()];
for(Enumeration el = vec.elements(), int i=0; el!=null && el.hasMoreElements();strArray[i++]=el.nextElement()));


Это сообщение отредактировал(а) Dancer - 14.3.2007, 12:57


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
_LEM_
Дата 14.3.2007, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Dancer, Я там те хотел написать ,но не могу войти.
Так вот Stringtokinezer тоже не то.
Неужели в java что бы тупо получить массив из строки нужно так мудиться:
 
Код
String s="aaa,,bbb,ccc,,,";
Vector vec = stringTokenizer(s,",,");
String strArray[] = new String[vec.size()];
for(Enumeration el = vec.elements(), int i=0; el!=null && el.hasMoreElements();strArray[i++]=el.nextElement()));

уж0с.
Вот думаю какие вообще есть способы , какие лучше ,что юзать сначало.
Вот есть мнение что парсинг рулит,неплохо бы привести пример -)
Просто для реализации моей задачи мне надо разделить строку ,потом разделённую строку ещё раз разделить -)
Если начальный код выглядит так что будет потом =)

Цитата(Dancer @  14.3.2007,  12:50 Найти цитируемый пост)
Если с Vector работать нельзя, не хочешь, не умеешь (нужное подчекнуть)
 Да нет,буду юзать весь язык по мере свободного времени, но желательно с того что полегче начать.

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


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



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


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
_LEM_
Дата 15.3.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(javastic @  15.3.2007,  10:20 Найти цитируемый пост)
 ну напиши себе свой собственный метод который будет разделять строку на части и все дела. Потом используй где хочешь и сколько хочешь.

Дык и спрашиваю как это сделать, субсторами и индексоф не выйдёт.
т.к. вид такой:
data||data||data
data||data||data
Надо разбить по переносу,потом по || каждую строку, причём их кол - во неизвестно, эти данные беруться от сервера.

Добавлено @ 11:19 
Кстати от сервера могу как угодно выдать данные , поэтому и консультируюсь на счёт способов получения массивов.
PM MAIL   Вверх
javastic
Дата 15.3.2007, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Ну дык и всё. Начало такое:
Код

public String[] getArrayString(String s, String separator) {
  // и в цикле разбираешь ...
}


а дальше сам


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Dancer
Дата 16.3.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

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



Цитата(_LEM_ @ 15.3.2007,  11:17)
Дык и спрашиваю как это сделать, субсторами и индексоф не выйдёт.
т.к. вид такой:
data||data||data
data||data||data
Надо разбить по переносу,потом по || каждую строку, причём их кол - во неизвестно, эти данные беруться от сервера.

Дык так и делай smile))

String s=.... ;// это твоя прочитанная строка из файла или ещё откуда
Vector vecLines = stringTokenizer(s,"\n");  //первое разделение, на строки.
String strArray[][] = new String[vecLines.size()][];
for(Enumeration el = vecLines.elements(), int i=0; el!=null && el.hasMoreElements();i++) {
    Vector v = stringTokenizer((String)el.nextElement(),"||"));
    strArray[i] = new String(v.size());
    for(Enumeration e = v.elements(), int j=0; e!=null && e.hasMoreElements();strArray[i][j++]=e.nextElement());
    v = null;
}



--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
javastic
Дата 16.3.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Dancer, походу человек хочет получить уже написанный код чтобы не париться. smile


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
Dancer
Дата 16.3.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

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



ды ёпрст! smile по ссылке если зайти, там уже готовый код метода. Я ему это на другом форуме писал. Этот метод получает строку, и разделитель, выводит Vector, каждый элемент такого вектора это строка, полученная из исходной путём разделения по указанным пользователем разделителям. Здесь, я ему уже реализацию написал с помощью имеющегося на другом сайте (смотри ссылку) метода. Ему нужно лишь это в свою аппликуху воткнуть. Ну уж если и это трудно smile), тогда вряд ли тут поможешь. (дело даже не в "голове") smile


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Dancer
Дата 16.3.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

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



в моём методе stringTokenizer у меня была допущена маленькая ошибочка (писал на "коленке"). Сейчас вот полностью нормальный, рабочий и правильный код.
Код

import java.util.*;

public class test {
    public static void main(String str[]) {
        String s="data0_0||data0_1\ndata1_0||data1_1||data1_2||data1_3\ndata2_0";// это твоя прочитанная строка из файла или ещё откуда
        Vector vecLines = stringTokenizer(s,"\n");  //первое разделение, на строки.
        String strArray[][] = new String[vecLines.size()][];
        int i_iterator=0;
        for(Enumeration el = vecLines.elements(); el!=null && el.hasMoreElements();i_iterator++) {
            Vector v = stringTokenizer((String)el.nextElement(),"||");
            strArray[i_iterator] = new String[v.size()];
            int j_iterator=0;
            for(Enumeration e = v.elements(); e!=null && e.hasMoreElements();strArray[i_iterator][j_iterator++]=(String)e.nextElement());
            v = null;
        }
        for(int i=0;i<strArray.length;i++) {
            Log("Strorka "+i);
            for(int j=0;j<strArray[i].length;j++) {
                 Log("element["+i+"]["+j+"]="+strArray[i][j]);
            }
            Log("==================");
        }
    }

    private static void Log(String str) {
        System.out.println(str);
    }

   public static Vector stringTokenizer(String str, String delimetr) {
        if(str==null || delimetr==null) return null;
        if(delimetr.equals("")) {
            Vector v = new Vector(0,1);
            v.addElement(str);
            return v;
        }

        Vector tmp = new Vector(0,1);
        String tmpStr;
        int start=0,index=0;

        while((index=str.indexOf(delimetr,index)) > -1) {
            tmpStr=str.substring(start,index);
            if(!tmpStr.trim().equals("")) {
                tmp.addElement(tmpStr);
            }
            start=index+delimetr.length();
            index=start;
        }

        if(start<str.length()) {
            if(!str.substring(start).trim().equals("")) {
                tmp.addElement(str.substring(start).trim());
            }
        }

        if(tmp.size() > 0) {
            return tmp;
        }

        return null;
    }


}



--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
_LEM_
Дата 17.3.2007, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



javastic, Те часть ответа дал Dancer, вот я добавлю,что тупо списать это не выход для меня.
Даже больше , я не просил ни каких готовых методов,хотя спасибо конечно.
Цитата(javastic @  16.3.2007,  14:03 Найти цитируемый пост)
 походу человек хочет получить уже написанный код чтобы не париться

Даже обидно -(
Делаю свой набросок ,но так в J2ME нович0г ,ни фига не выходит
Код


int element = 0;
int start = 0;
int next;
String tmpstring;
String while = "while";
/* Не знаю какой тип указать ,буду писать везде array */
array arr;


array explode (Sting razdelitel,String stroka)
{
while (while == "OFF")
{
tmpstring = stroka.substring (start);
next = tmpstring.indexof(razdelitel);
if (next<>-1)
{
arr[] = tmpstring.substring(0,next);
}
else
{
arr[] = tmpstring;
break;
}
start = next;
}
return arr;
}
/* ВотЬ..
Ошибок наверное тьма, заместо array я не знаю чё ставить наверное Vector
И где start = next+1; наверное надо было записать.



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


alexander lonsky
***


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

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



Цитата(_LEM_ @  17.3.2007,  12:47 Найти цитируемый пост)
но так в J2ME нович0г

1. Отбросим технологию j2me
Цитата(_LEM_ @  17.3.2007,  12:47 Найти цитируемый пост)
String while = "while";

while - это зарезервированное слово, нельзя так писать.
Cначала нужно выучить язык. А потом учить технологию.
Брюс Эккель - "Философия Java" 3 издание. Хорошая книга ИМХО



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


Новичок



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

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



Хе, про php тоже так говорили,но тем не менее я освоил его без учебников и с обычного сотового телефона ;-)
-
Зарезервиванно ,но обьявленно же как обьект String, если так низя ,то очень хорошо ,уже знаю что так нельзя -)
-
Допустим написал
String whilee = "whilee"; // smile
Что на счёт массива скажете?
PM MAIL   Вверх
W0LF
Дата 17.3.2007, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


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

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



В твоем случае ты не знаешь, сколько будет элементов. Vector - это динамический массив. Так что юзай его


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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