我试图打印出8puzzle游戏的表格表示。
我知道如何使用打印格式,即printf("%2s", ..)
等等,但我不确定如何根据正在播放的电路板大小(可能是3x3,5x5,......)来改变它
我可以通过编码获得最大数量的长度:
String.valueOf(Side*Side - 1).length()
并将其存储在int中。那么我如何获得那个int来替换上面printf示例中的2?
有更好的方法吗?感谢。
答案 0 :(得分:0)
要将整数作为字段长度的格式,只需将其连接为字符串的一部分:
int maxWidth = String.valueOf(Side*Side - 1).length();
printf( "%" + maxWidth + "s", .... );
格式化字符串就像任何其他字符串一样。
答案 1 :(得分:0)
您想要的是动态构建模板String,并将所有内容放入其中。例如,对于3x3电路板,您可能需要模板"%n\t%n\t%n\n%n\t%n\t%n\n%n\t%n\t%n"
,如果提供9个数字输入,模板将在控制台上打印为3x3网格。要构建模板,请执行以下操作:
public String makeTemplate(size){
StringBuilder builder = new StringBuilder();
for(int i = 0;i < size;i++){
for(int i = 0;i < size-1;i++){
builder.append("%n\t");
}
builder.append("%n\n");
}
return builder.toString();
}
使用此类型方法生成的模板来正确格式化输出。使用示例如下所示
public void someMethod(){
int[] numbers = new int[9]; //fill in array with numbers
String template = makeTemplate(3);
String formatted = String.format(template,numbers);
System.out.println(formatted);
}