2015-11-19 5 views
2

Я пытаюсь прочитать txt-файл и распечатать строку напротив. например: ТХТ:Изменение строк при печати массива

3 //size of matrix 
3 4 5 
5 6 7 
6 7 8 

вывод должен быть:

6 7 8 
5 6 7 
3 4 5 

Я написал программу. программа печатает:

5 6 7 
3 4 5 

который без первой строки: 6 7 8.

В чем моя ошибка?

public static void main (String[] args) { 
    int matrixSize = StdIn.readInt(); 
    String [] array = new String [matrixSize]; 
    for (int i=0; i <= matrixSize-1; i++) 
    { 
     array[i] = StdIn.readLine(); 
     StdOut.println(array[i]); 
    } 
    for (int j=matrixSize-1; j >= 1; j--) 
    { 
     StdOut.println(array[j]); 
    } 
} 
+0

Если матрица имеет 3 ряда, то первое число в вашем входе должно быть 3, а не 2 – Eran

+0

Почему? матрица 3 * 3, поэтому размер матрицы должен быть равен 3. – Dana

+0

Это точно моя точка. Ваш ввод начинается с 2, поэтому читаются только 2 строки. – Eran

ответ

0

Этот цикл будет перебираться из последнего элемента во второй.

for (int j=matrixSize-1; j >= 1; j--) 

Изменения также включают в себя первый элемент

for (int j=matrixSize-1; j >= 0; j--) 

Кроме того, кажется, что StdIn.readInt() не потребляет символ новой строки. Поэтому, когда вы делаете StdIn.readLine(), после этого вы получаете пустую строку. Эта пустая строка - это то, что осталось от первой строки после сканирования номера. Простое решение для этого было бы получить matrixSize так:

String text = StdIn.readLine(); 
int matrixSize = Integer.parseInt(text); 
+0

Работает замечательно. Спасибо огромное! Я понял свою проблему :) – Dana

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