使用二重循环打印各种图形
2012-04-08 12:59
549 查看
1.
打印直角三角形
需求说明:
从控制台输入直角三角形的高度(行数)。
每行*的数目依次为1、3、5、7等。
实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件
分析每行打印的内容:每一行均打印*号,第i行的*号数为2*i-1,从而得到内层循环条件
代码如下:
import java.util.Scanner;
publi cclass
Three {
public static
void main(String[] args)
{
int rows = 0;
Scanner input = new Scanner(System.in);
System.out.println("请输入直角三角形的行数:");
rows=input.nextInt();
for(int i=0; i<=rows; i++)
{
for(int j=0; j<2*i-1; j++)
{
System.out.print("*");
}
System.out.println("");
}
}
}
2.
打印倒直角三角形
需求说明:
从控制台输入直角三角形的高度(行数)。
每行*的数目从下至上依次为1、2、3、4等。
实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件。
分析每行打印的内容,每一行均打印*号,某一行与该行的*号数之和等于行数加1,从而得到内层循环条件。
例如:用户从控制台输入的行数用rows表示,第几行用i表示,*号数用x表示,那么
第i行就是:i+x=rows+1-----------------à*号数x=rows+1-i
代码如下:
import
java.util.Scanner;
public class Four {
public static
void main(String[] args)
{
int rows=0;
Scanner input = new Scanner(System.in);
System.out.println("请输入直角三角形的行数:");
rows=input.nextInt();
for(int i=1; i<=rows; i++)
{
for(int j=1; j<=rows+1-i; j++)
{
System.out.print("*");
}
System.out.println("");
}
}
}
3.
打印等腰三角形
需求说明:
从控制台输入直角三角形的高度(行数)。
每行*的数目依次为1、3、5、7等。
实现思路:外层循环控制行数,根据用户输入的行数得到外层循环条件。
分析每行打印的内容:每一行先打印空格,再打印*号。打印空格和打印*号用两个不同的for循环。为了清晰起见,下面我们以#号代替空格来分析每行空格数、*号数和行数的关系:第i行的空格数与i之和等于用户从控制台输入的行数rows,第i行*号数为2*i-1,从而得到两个内层for循环的循环条件。
例如:用户从控制台输入的行数用rows表示,第几行用i表示,空格数数用space表示,那么
第i行就是:i+space=rows-----------------à空格数space=rows-i
代码如下:
import java.util.Scanner;
public
class Five {
public static
void main(String[] args) {
// TODO Auto-generated method stub
int rows=0;
Scanner input = new Scanner(System.in);
System.out.println("请输入等腰三角形的行数:");
rows=input.nextInt();
for(int i=1; i<=rows; i++)
{
for(int j=1; j<=rows-i; j++)
{
System.out.print("#");
}
for(int k=1; k<=2*i-1; k++)
{
System.out.print("*");
}
System.out.println("");
}
}
}
4.
打印菱形
需求说明:
从控制台输入菱形的高度(行数),如果用户输入的行数合法(奇数),则打印出菱形,否则提示用户输入奇数。
假设每行输入的行数为rows,则每行的*号数依次为1、3、5、7、......、rows、......、7、5、3、1
实现思路:
(1)
利用while循环判断用户输入的是否为奇数。
int rows=0;
Scanner input =
new Scanner(System.in);
System.out.println("请输入菱形行数:");
rows=input.nextInt();
while(rows%2==0)
{
System.out.println("请输入奇数:");
rows=input.nextInt();
}
(2) 分步打印,先打印菱形的上半部分,即一个等腰三角形,行数为(rows+1)/2,可以
得到外层循环和两个内层循环的循环条件。
int n=(rows+1)/2;
for(int i=1;i<=n;i++)
{
for(int j=1; j<=n-i; j++)
{
System.out.print(" ");
}
for(int k=1; k<=2*i-1; k++)
{
System.out.print("*");
}
System.out.print("\n");
}
(3) 打印菱形的下半部分,打印完一行后换行
for(int i=n-1; i>=1; i--)
{
for(int j=0; j<n-i; j++)
{
System.out.print(" ");
}
for(int k=0; k<2*i-1; k++)
{
System.out.print("*");
}
System.out.print("\n");
}
完整代码如下:
import
java.util.Scanner;
public
class Six {
public static
void main(String[] args) {
// TODO Auto-generated method stub
int rows=0;
Scanner input = new Scanner(System.in);
System.out.println("请输入菱形行数:");
rows=input.nextInt();
while(rows%2==0)
{
System.out.println("请输入奇数:");
rows=input.nextInt();
}
int n=(rows+1)/2;
for(int i=1;i<=n;i++)
{
for(int j=1; j<=n-i; j++)
{
System.out.print(" ");
}
for(int k=1; k<=2*i-1; k++)
{
System.out.print("*");
}
System.out.print("\n");
}
for(int i=n-1; i>=1; i--)
{
for(int j=0; j<n-i; j++)
{
System.out.print(" ");
}
for(int k=0; k<2*i-1; k++)
{
System.out.print("*");
}
System.out.print("\n");
}
}
}
相关文章推荐
- 新.使用二重循环打印如图-1所示的图形。
- java中使用二重循环打印图形
- 9.28机试 使用二重循环打印图形
- Java中使用二重循环打印沙漏图形
- 10、使用双重循环打印图形
- 重写C#使用二重循环打印9*9的乘法表。
- 3.7.12 使用for循环打印下面的图形
- C语言中用循环打印各种图形
- 使用循环打印各种变形三角形
- C++:使用循环输出各种图形
- for循环的使用—打印输出各种图形
- 放肆地使用UIBezierPath和CAShapeLayer画各种图形
- 二重循环打印菱形
- 使用三种循环方法编写等腰梯形图形
- Java中循环问题:for,while,do-while 各种练习(打印上三角、下三角、输出100以内的素数、水仙花、最大公约、最小公倍数、分解质因数、兔子问题)
- (角度与弧度转换)放肆的使用UIBezierPath和CAShapeLayer画各种图形
- Python 中使用 for、while 循环打印杨辉三角练习(列表索引练习)。
- 使用UIBezierPath和CAShapeLayer画各种图形
- 代码:双重for循环打印简单图形
- IntelliJ IDEA使用快捷键生成各种for循环。增强for循环等等