2015-09-27 3 views
0

Я чтение из текстового файла, который выглядит следующим образом:Чтение из текстового файла и пренебрегая пространства

A B C D 
E F G H 
I J K L 
M N O P 

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

char[][] letters = new char[4][4] 
Scanner read = new Scanner(new File("letters.txt")); 
while(read.hasNextLine()) { 
    for(int row = 0; row < letters.length; row++) { 
     String line = read.nextLine(); 
     for(int col = 0; col < letters[row].length; col++) { 
      letters[row][col] = line.charAt(col); 
     } 
    } 
} 
+0

Вы можете использовать 'Scanner # следующий()' читать персонажи индивидуально. Пробелы будут пропущены. – Cinnam

ответ

3

Если вы хотите, чтобы получить одиночные символы из line затем использовать

letters[row][col] = line.charAt(2*col); 

и он будет просто пропустите пробелы

1

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

for(int row = 0; row < letters.length; row++) { 
    String line = read.nextLine(); 
    line = line.replace(" ", ""); 
    for(int col = 0; col < letters[row].length; col++) { 
     letters[row][col] = line.charAt(col); 
    } 
} 

Это займет ваше начальное String и в основном устранит все пробелы.

Это ваш вход, например:

A B C D 

А вот выход line.replace(" ", "")

ABCD 
0

Вы можете использовать split функцию. Он предоставит вам, чтобы сохранить каждую строку вашего файла в массиве, взяв в качестве ссылки пробел " ". Кроме того, вы должны объявить переменную line из цикла.

Например, если у вас есть первая строка: A B C D

line = read.nextLine(); //Here you read the line 

/* Here you store each character of your line in a position of the array 
    because you are taking as reference the space " " */ 

array = line.split(" "); 

System.out.println(array[0]); //A 
System.out.println(array[1]); //B 
System.out.println(array[2]); //C 
System.out.println(array[3]); //D 

Ваш код должен выглядеть следующим образом:

char[][] letters = new char[4][4]; 
String line; 
char ch; 
String[] array; 
Scanner read = new Scanner(new File("letters.txt")); 
while(read.hasNextLine()) { 
    for(int row = 0; row < letters.length; row++) { 
     line = read.nextLine(); 
     array = line.split(" "); 

     for(int col = 0; col < letters[row].length; col++) { 
     { 
      ch = array[col].charAt(0); 
      letters[row][col] = ch; 
     } 

    } 
} 
+0

Это полезно, за исключением того, что он не будет работать, потому что 'array [col]' is String [] not char – JCCS

+0

@JCCS Я редактировал свой вопрос. Попробуй это сейчас. –

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