2015-03-12 3 views
1

Я хочу прочитать большой файл, содержащий текст, как это:Разбивает строку в символов в Java

QSSTNAFDQVS, h 
SSTNAFDQVSA, h 
STNAFDQVSAQ, h 
TNAFDQVSAQG, h 
NAFDQVSAQGK, h 
AFDQVSAQGKV, h 
FDQVSAQGKVI, h 
EAILGDQFLKQ, h 
AILGDQFLKQQ, h 
ILGDQFLKQQY, h 
LGDQFLKQQYV, h 
VGKMAKSVMGH, h 
GKMAKSVMGHN, h 
KMAKSVMGHNW, h 
MAKSVMGHNWV, h 
.... 

Мой код:

BufferedReader br = new BufferedReader(file); 
     while((line = br.readLine()) != null) { 
      String[] values = line.split(","); 
      String atributes = values[0]; 
      String cls = values[1].trim(); 
      for (int i=0; i<atributes.length(); i++) { 
       char atribute = atributes.charAt(i); 
       System.out.print(atribute + " "); 
      } 
      System.out.println(); 
     } 

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

S S D I T A S V N C A 
S D I T A S V N C A K 
D I T A S V N C A K K 
I T A S V N C A K K I 
T A S V N C A K K I V 
A S V N C A K K I V S 
..... 

Если я делаю печать, и я не делаю разделения как это:

BufferedReader br = new BufferedReader(file); 
      while((line = br.readLine()) != null) { 
       String[] values = line.split(","); 
       String atributes = values[0]; 
       String cls = values[1].trim(); 
       System.out.println(atributes); 
      } 

я получаю их в правильном порядке:

QSSTNAFDQVS 
SSTNAFDQVSA 
STNAFDQVSAQ 
TNAFDQVSAQG 
NAFDQVSAQGK 
AFDQVSAQGKV 
FDQVSAQGKVI 
EAILGDQFLKQ 
AILGDQFLKQQ 
..... 

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

+1

Я не думаю, что проблема в том, что атрибуты в случайном порядке, я не вижу ничего в коде, который будет нести ответственность за это. Вы уверены, что это так? Это полный код? –

+0

Я опубликовал весь код, который обрабатывает прочитанный файл. Также я разместил два примера до и после того, как я сделаю раскол + результаты, которые я получаю. Я привел в качестве примера первые строки текстового файла – dres

+0

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

ответ

0

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

Я побежал следующий код:

String line = "ZYXABCDEFGHIJ, h"; 
String[] values = line.split(","); 
String atributes = values[0]; 
String cls = values[1].trim(); 
for (int i=0; i<atributes.length(); i++) { 
    char atribute = atributes.charAt(i); 
    System.out.print(atribute + " "); 
} 

И я это прекрасно: ZYXABCDEFGHIJ

+4

Возможно, это должен быть комментарий? –

+0

Вы правы, я начал с ответа, когда думал, что что-то еще не так. –

+0

Undeleted, потому что я проверил его случай, и я уверен, что этот код не проблема. –

0

Ваша проблема в другом месте - это код - в котором четко функционирует идентичным образом к твоему:

static final String[] data = { 
    "QSSTNAFDQVS, h", 
    "SSTNAFDQVSA, h", 
    "STNAFDQVSAQ, h", 
    "TNAFDQVSAQG, h", 
    "NAFDQVSAQGK, h", 
    "AFDQVSAQGKV, h", 
    "FDQVSAQGKVI, h", 
    "EAILGDQFLKQ, h", 
    "AILGDQFLKQQ, h", 
    "ILGDQFLKQQY, h", 
    "LGDQFLKQQYV, h", 
    "VGKMAKSVMGH, h", 
    "GKMAKSVMGHN, h", 
    "KMAKSVMGHNW, h", 
    "MAKSVMGHNWV, h",}; 

public void test() { 
    for (String line : data) { 
     String[] values = line.split(","); 
     String atributes = values[0]; 
     String cls = values[1].trim(); 
     for (int i = 0; i < atributes.length(); i++) { 
      char atribute = atributes.charAt(i); 
      System.out.print(atribute + " "); 
     } 
     System.out.println(); 

    } 
} 

печатает

Q S S T N A F D Q V S 
S S T N A F D Q V S A 
S T N A F D Q V S A Q 
T N A F D Q V S A Q G 
N A F D Q V S A Q G K 
A F D Q V S A Q G K V 
F D Q V S A Q G K V I 
E A I L G D Q F L K Q 
A I L G D Q F L K Q Q 
I L G D Q F L K Q Q Y 
L G D Q F L K Q Q Y V 
V G K M A K S V M G H 
G K M A K S V M G H N 
K M A K S V M G H N W 
M A K S V M G H N W V 

Может ли файл считываться более чем одним потоком?

+0

это тоже может быть комментарий –

+0

Я думаю, что это ответ - * проблема не в размещенном коде *. – OldCurmudgeon

+0

не ваше предложение выделено курсивом - идеальный комментарий для плохо заданного вопроса? –

0

Возможно, вы вносите неправильный файл во ввод в первом коде.

Можете ли вы опубликовать результат:

BufferedReader br = new BufferedReader(file); 
      while((line = br.readLine()) != null) { 
       String[] values = line.split(","); 
       String atributes = values[0]; 
       String cls = values[1].trim(); 
       System.out.println(atributes); 
       System.out.println(); 
       for (int i=0; i<atributes.length(); i++) { 
        char atribute = atributes.charAt(i); 
        System.out.print(atribute + " "); 
       } 
       System.out.println(); 
      } 
+0

Он печатает их в том же случайном порядке, как строка, так и строка, разделенная – dres

+0

Проверьте значение файла, введенного в новый файл BufferedReader (файл). Если это тот же порядок, это явно неправильный ввод, который вы принимаете. – JFPicard

+0

Я изменил файл, и то же самое происходит. Я не понимаю, что может быть неправильно с этими файлами ... – dres

Смежные вопросы