2014-11-03 2 views
0

Я работаю над проектом, который рисует X из нескольких x, а число x в диагонали задается пользователем. Например, если число задается пользователем, 4, она будет выглядеть следующим образом:Настройка позиции консоли

X X 
XX 
XX 
X X 

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

X 
X 
    X 
    X 
    X 
    X 
X 
X 

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

Благодаря

+0

Это уже было предложено, чтобы избежать этой проблемы , и одна из причин состоит в том, что t возможность и способ перемещения курсора зависят от системы. Некоторые системы могут использовать ANSI seqences, другие могут эмулировать терминал мейнфрейма vt52, vt100 или vt220 и т. Д. И я думаю, что вполне возможно, что выходное окно в некоторых IDE может не иметь возможности прокручивать назад (на основе кодов, вставленных в выход), в все. –

ответ

3

Это будет лучше, чтобы напечатать весь выход в качестве 2D массива, и напечатать все это в конце программы. Мне будет намного легче, чем манипулировать местоположениями курсора консоли.

Конечно, можно установить расположение курсора. Я думаю, вам лучше искать некоторые символы ascii, такие как «\ b» (backspace), которые используются для непосредственного управления местоположениями курсора. Тем не менее, я думаю, что решение на основе массивов будет намного проще, и переносимость гарантирована.

+0

Хорошо, спасибо за предложение, и я рассмотрю эти символы ASCII. – user2226786

0

Здесь решение, управляющее строками, не перемещая курсор на консоли.

Print_X(4); 

Выход:

X X 
XX 
XX 
X X 

Функция:

public static void Print_X (int num) { 
    String str; 
    for(int i=0;i<num;i++) { 
     str=""; 
     for(int n=0;n<num;n++) str += " "; 
     str=str.substring(0,i)+'X'+str.substring(i+1); 
     str=str.substring(0,(num-1)-i)+'X'+str.substring(num-i); 
     System.out.println(str); 
    }   
} 

Или это короче функция прямо на выходе консоли:

public static void Print_X (int num) { 
    int j,i,dz=num-1; 
    for(i=0;i<num;i++,dz-=2) { 
     for(j=0;j<num;j++) 
      System.out.print((j==i || j==i+dz)?"X":" ");       
     System.out.println(); 
    }   
} 
+0

@ user2226786 Одно из возможных решений вашего вопроса. – SkyMaster

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