java——控制台输入打印图形

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) {

    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
完整代码如下:
import java.util.Scanner;

 public class Six {

  public static void main(String[] args) {

    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

你可能感兴趣的:(Java)