设置控制台位置

时间:2014-11-03 04:19:09

标签: java algorithm console-application

我正在研究一个项目,该项目从多个x中抽取X,并且用户给出对角线中x的数量。例如,如果用户给出的数字是4,它将如下所示:

X  X
 XX
 XX
X  X

我用一个打印对角线方法编写了一个程序,当我绘制第二个对角线时会出现问题,因为它在控制台中绘制了第一个对角线下面的第二个对角线。它看起来像这样:

X
 X
  X
   X
   X
  X
 X
X

我想知道是否可以将控制台线设置回到开头,以便我可以从顶部绘制另一个对角线。我研究过系统方法,但是我找不到任何东西。任何建议表示赞赏。

由于

2 个答案:

答案 0 :(得分:4)

最好将所有输出打印到2D数组中,并在程序结束时将其全部打印出来。我将比操纵控制台光标位置容易得多。

当然可以设置光标位置。我认为您最好查找一些ascii字符,例如' \ b' (退格),用于直接操作光标位置。但是,我认为基于阵列的解决方案将更容易,并且可移植性得到保证。

答案 1 :(得分: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();
    }        
}