forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Парадоксальная строка (http://forum.boolean.name/showthread.php?t=7390)

Romanzes 29.11.2008 00:23

Парадоксальная строка
 
У меня есть файл, в котором лежат тексты, разделенные символами ***, примерно вот так:

Текст1
***
Текст2
***
Текст3

Мне нужно считать тексты и поместить их в массив строк. Я делаю это так:
Код:

Texts = LoadFile(getClass().getResourceAsStream("/1.dat"),"***");
Где Texts - это массив строк.

Вот функция LoadFile:
Код:

public static String[] LoadFile(InputStream is, String parser)
{
 Vector punkts = new Vector();
 String s;
 StringBuffer sb = new StringBuffer();
 do
 {
  s=readline(is);
  if (s.length()==0) break;
  if (s==parser)
  {
  punkts.addElement(sb.toString());
  sb=new StringBuffer();
  }
  else{sb.append(s);}
 }
 while (true);
 try{is.close();}catch(Exception ex1){}
 String[] p=new String[punkts.size()];
 for (int i=0; i<punkts.size(); i++)
 punkts.copyInto(p);
 return p;
}

а вот readline:
Код:

public static String readline(InputStream is)
{
 StringBuffer sb = new StringBuffer();
 int c;
 try{
  boolean z=true;
  while (z)
  {
  c=is.read();
  if (c==13 || c==-1)
  {
    z=false;
    is.skip(1);
  }else{sb.append((char)c);}
  }
 }catch(Exception ex){return sb.toString();}
 return sb.toString();
}

Проблема в том, что условие (s==parser) НИКОГДА не выполняется. Однако, в дебаггере видно, что есть моменты, когда s="***" и parser="***", но при этом условие (s==parser) ложно :4to: . Похоже, я где-то очень жестко ступил. Что я делаю неправильно?

Piligrim 29.11.2008 02:00

Ответ: Парадоксальная строка
 
s.equals(parser) будет правльнее

Romanzes 29.11.2008 09:49

Ответ: Парадоксальная строка
 
Огромное спасибо! Работает! :super:


Часовой пояс GMT +4, время: 23:15.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot