黑马程序员技术交流社区
标题:
关于循环打印输出的问题
[打印本页]
作者:
金鑫
时间:
2012-6-11 12:09
标题:
关于循环打印输出的问题
今天看毕老师的循环打印,自己思考的几个问题求解
/* 54321
* 5432
* 543
* 54
* 5
* */
这个图形如何打印求解,思考了半天结果都不对
这个图形,视频中是用双层循环嵌套的2个for打印出来的
*
**
***
****
*****
/* for (int x=0; x<5 ;x++ )
{
for (int y=0 ; y<=x ; y++ )
{
System.out.print("*");
}
System.out.println();
}
System.out.println("----------------------");*/
后来发现用一个for也能打印出来,用到的是累加思想
String name ="*";
String name2 = "";
for (int i = 0; i <5; i++) {
name2+=name;//通过累加思想。每一行的星数都是上一行的星数加*
System.out.println(name2);
}
*****
****
***
**
*
这个图形能不能用一个for打出来。。。。
作者:
梁小波
时间:
2012-6-11 12:18
楼主想法很好!那你何不用一个累减的思想?
用Stringbuffer操作动态字符串,每循环一次去掉最后的一个*;
StringBuffer mybuf=new StringBuffer(“*****”);
去掉最后一个mybuf.delete(mybuf.length()-1,mybuf.length());
作者:
胡卿
时间:
2012-6-11 12:23
标题:
但是二元运算符-=不能操作字符串,所以你的想法不能实现
本帖最后由 胡卿 于 2012-6-11 14:51 编辑
String name ="*****";
String name2 = "";
for (int i = 0; i <5; i++) {
name2+=name;//通过累加思想。每一行的星数都是上一行的星数加*
System.out.println(name2);
}
有人会想:
既然这样可以
那么
for (int i = 0; i <5; i++) {
name2-=name;//通过累加思想。每一行的星数都是上一行的星数加*
System.out.println(name2);
是不是也行呢
其实是不可以的 ,因为二元运算符“-=”是不可以作用于字符串的
所以要实现以上图形还是需要for循环嵌套或者使用二维数组
作者:
唐志兵
时间:
2012-6-11 12:24
本帖最后由 唐志兵 于 2012-6-11 12:29 编辑
public class printInt {
public static void main(String[] args) {
for(int x = 4 ;x >= 0 ;x--){
for(int y = 0; y <= x; y++){
System.out.print("*");
}
System.out.println();
}
}
}
复制代码
第一次循环,x=4,内嵌的for()要循环5次 从y=0 到 y=4; 循环完成后打印换行。
第二次循环,x=3,内嵌的for() 要循环 4次,从0到3,打印换行。
第三次新欢,x=2,内嵌for循环3次,从0-2
....................................................................
俺这种方法是不是很简单呢。。?
作者:
sbeeqnui1987
时间:
2012-6-11 12:25
for(int i=0;i<p;i++){
for(int j=0;j<p-i-1;j++){
System.out.print(" ");
}
for(int j=0;j<i+1;j++){//双重循环里面的 范围通常是个不定的值,与主循环的I相对应
System.out.print("* ");
}System.out.println();
}
for(int i=0;i<p-1;i++){
for(int j=0;j<i+1;j++){//j与i+1的差 即是 当前行 的重复 值
System.out.print(" ");
}
for(int j=0;j<p-1-i;j++){
System.out.print("* ");
}System.out.println();
}
循环嵌套一下就好 ,每一行的前面空行和星的数量在其中找到关系来写个for循环的嵌套
作者:
杨康
时间:
2012-6-11 14:02
给一个思路:打印某些图形,一般用二维数组来完成比较简单,思路也也会明朗。
例如:打印V字形,也就是如下图:
v.jpg
(3.77 KB, 下载次数: 35)
下载附件
2012-6-11 12:47 上传
对于这个图形就可以创建一个二维数据来存储数据,那么二维数组里有几个一维数组,一维数组里面又有几个元素呢,这很简单就看图形里面有几行就有几个一维数组,一行中有多少个单元,那么一维数组里面就有几个元素。好了那么下面咱们就可以用程序来创建二维数组,并将按图形的格式数据存储到数组中,最后打印这个二维数组就可以了。
可能你还会想一个问题就是怎么存储这些数据呢,这个咱们来分析一下数据的特点:1应该存储在arr[0][0],2应该存储在arr[1][1] 依次类推如下图:
v2.jpg
(4.57 KB, 下载次数: 55)
下载附件
2012-6-11 12:57 上传
这样咱们就可以按这个规律来完成数据的存储了。
下面附上程序代码:
int len = 5;
int row = 3;
int[][] arr = new int[row][len];
int x = 0;
boolean tag = false;
for(int y=0;y<len;y++){
arr[x][y]=y+1;
if(!tag)
x++;
else
x--;
if(x==row){
x=row-2;
tag=true;
}
}
for(int r=0;r<row;r++){
for(int c=0;c<len;c++){
int value = arr[r][c];
if(value==0){
System.out.print(" ");
}else{
System.out.print(value);
}
}
System.out.println();
}
复制代码
作者:
梁永奇
时间:
2012-6-11 17:19
代码前几位说的很多了,我就谈谈思想吧,循环就是限定个条件,然后在条件下运行,输入的行数是一个规律,每一行的排列方式又是规律,这样就有了两个循环的嵌套
作者:
吴小东
时间:
2012-6-12 10:40
之前在嵌套循环做九九乘法表的时候就想到了这个问题,利用一个for语句实现九九乘法表,纠结了半天还是弄出来了。
我的想法是:既然不能能用嵌套循环,又要实现嵌套的效果,那么我们只有改变循环的条件。
下面是单for 实现代码
for (int i=5,j=1;i>=j ;i-- )
{
System.out.print(i);
if (i==j)
{
i=6;//因为要-1所以定义为6
j++;
System.out.println();
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2