首页 / JAVA / java – 在帧内打印帧
java – 在帧内打印帧
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 在帧内打印帧,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3285字,纯文字阅读大概需要5分钟。
内容图文
![java – 在帧内打印帧](/upload/InfoBanner/zyjiaocheng/779/b796aaa752914a6d817c854817bca309.jpg)
我在Java中完成了这项任务,而且我没有一个如何做到这一点的线索.
任务是接收整数n> 1. 0,并且打印由*内部构造的n个帧,而内部框架将具有由4n 1 *构成的字母“X”.
我不能使用数组或字符串.
例如:
n = 1将打印:
*******
* *
* * * *
* * *
* * * *
* *
*******
n = 2将打印:
*************
* *
* ********* *
* * * *
* * * * * *
* * * * * *
* * * * *
* * * * * *
* * * * * *
* * * *
* ********* *
* *
*************
这是我到目前为止:
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int size = n * 6 + 1;
int x = 1;
int y = 1;
for (int i = 0; i < n; i = i + 1) {
for (int i3 = 0; i3 < size; i3 = i3 + 1) {
System.out.print("*");
}
System.out.println("");
y = y + 1;
for (int i1 = 0; i1 < size - 2; i1 = i1 + 1) {
System.out.print("*");
for (int i2 = 0; i2 < size - 2; i2 = i2 + 1) {
System.out.print(" ");
}
System.out.println("*");
y = y + 1;
}
for (int i4 = 0; i4 < size; i4 = i4 + 1) {
System.out.print("*");
}
}
解决方法:
这个问题有很多不同的方法.这可能不是最好的,但它是非常简单和有教育意义的IMO.
主要思想是:您不需要知道如何打印整个框架.您只需要知道如何打印1/4 – 然后以反向X顺序重复它,然后以反向Y顺序重复它.让我们从绘制X开始,特别是它的一个对角线.如果“X”必须有4n 1 *,它有4个臂,每个有一个星星,中间有一个* – 总共4 * 1个星 – 所以,显然,4n 1 == 4a 1,每个臂都有准确地说是n *.让我们使用XY笛卡尔坐标系.因此,如果x == y,我们只有一个星号 – 否则我们有空间.
for ( int y = 0; y < n; y++ ) {
for ( int x = 0; x < n; x++ ) {
System.out.print( ( x == y ) ? '*' : ' ' );
}
System.out.println();
}
现在,让我们通过反向迭代为它添加一个镜像副本:
for ( int y = 0; y < n; y++ ) {
for ( int x = 0; x < n; x++ ) {
System.out.print( ( x == y ) ? '*' : ' ' );
}
for ( int x = n; x >= 0; x-- ) {
System.out.print( ( x == y ) ? '*' : ' ' );
}
System.out.println();
}
现在,让我们尝试进入有效的笛卡儿:
int x, y;
for ( y = -n; y <= n; y++ ) {
for ( x = -n; x < 0; x++ ) {
System.out.print( ( x == y || x == -y ) ? '*' : ' ' );
}
for ( ; x <= n; x++ ) {
System.out.print( ( x == y || x == -y ) ? '*' : ' ' );
}
System.out.println();
}
最后,我们可以认为它只是
for ( int y = -n; y <= n; y++ ) {
for ( int x = -n; x <= n; x++ ) {
System.out.print( hasAsterisk( Math.abs(x), Math.abs(y) ) ? '*' : ' ' );
}
System.out.println();
}
例如,与
static boolean hasAsterisk( int x, int y ) {
return x == y;
}
扩展此代码以处理帧,然后进行设置.框架的每个“夸脱部分”仅为每个n,2n个字符总数* – 十字架本身长度为n(见上文)加1个中心星号;总而言之,X和Y的范围将超过int [-3n,3n] – 称为3n m,并将其用作迭代范围.
作为另外的提示,该公式对于内十字(即,abs(x)<n,abs(y)<n)是不同的,并且对于帧本身是不同的.如果您注意到它是每隔一行,可以很容易地计算出框架的公式,在x轴上的两个星号三角形的形状中添加到y轴上的两个三角形. <br=""></n,abs(y)<n)是不同的,并且对于帧本身是不同的.如果您注意到它是每隔一行,可以很容易地计算出框架的公式,在x轴上的两个星号三角形的形状中添加到y轴上的两个三角形.> 返回(x <= n&& y< = n)? x == y :((x <y)?y%2 =="nMod2);</div">
相关文章
- python - Pretty打印pandas数据帧
- python - 打印大熊猫数据帧的完整字符串
- java - 在另一帧中单击按钮时更新帧上JPanel的内容
- Java:单帧与多帧
- iphone - 从Debugger发生错误:上一帧内部到这个帧(gdb无法展开过这个帧)
- python - 在未包含在另一个数据帧中的数据框中打印列的值
- 在函数输出中打印数据帧名称
- python - 在pandas数据帧的每一列中打印唯一值
转载注明原文:java – 在帧内打印帧 - 代码日志
内容总结
以上是互联网集市为您收集整理的java – 在帧内打印帧全部内容,希望文章能够帮你解决java – 在帧内打印帧所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。