本帖最后由 Gonnaloveu 于 2015-1-7 09:29 编辑
学java基础有一个月了,打算复习一下,无意间想到打印菱形了,以下是我自己写出来的两种方法,如果大家有什么其他方法欢迎分享.或者有什么其他有意思的拿出来大家一起做吧.
要求:只用一个for打印菱形"*"(当然其他的循环如while也不能用啦)
第一种方法:
- import java.util.Scanner;
- public class Test3 {
- public static void main(String[] args) {
- Scanner sc =new Scanner(System.in);
- System.out.println("请输入菱形的行数(请输入单数,因为双数无法构成菱形):");
- int x=sc.nextInt();
- for (int i = 0, j = 0, k = 0; i < x;) {
- if (Math.abs(i - x/2) + j == x/2) { //判断输出是否是此行的最后一个"*"
- if (Math.abs(i - x/2) > k) { //用来制造第一行和最后一行的空格
- System.out.print(" ");
- k++;
- } else { //换行并初始化j和k
- System.out.println("*");
- j = 0;
- k = 0;
- i++;
- }
- } else {
- if (Math.abs(i - x/2) > k) { //用来打印除第一行和最后一行的空格
- System.out.print(" ");
- k++;
- } else {
- System.out.print("**"); //后一个*可以改成空格
- j++;
- }
- }
- }
- }
- }
复制代码
第二种方法:
- import java.util.Scanner;
- /**
- * 假设菱形x行
- * 因为是菱形x行x列一共需要循环x²次
- * i%x代表第几列 i/x代表第几行 然后判断应该打印什么就可以了
- * */
- public class Test4 {
- public static void main(String[] args) {
- Scanner sc =new Scanner(System.in);
- System.out.println("请输入菱形的行数(请输入单数,因为双数无法构成菱形):");
- int x=sc.nextInt();
- for(int i =0;i<x*x;i++){
- if(i%x<Math.abs(i/x-x/2)){
- System.out.print(" ");
- }else if(i%x<x-1-Math.abs(i/x-x/2)){
- System.out.print("*");
- }else if(i%x == x-1){
- System.out.println("*");
- }
- }
- }
- }
复制代码 补充:
以上两种执行效果例图:
看到有人想要空心菱形的实际添加一个判断语句即可:
- import java.util.Scanner;
- public class Test3 {
- public static void main(String[] args) {
- Scanner sc =new Scanner(System.in);
- System.out.println("请输入菱形的行数(请输入单数,因为双数无法构成菱形):");
- int x=sc.nextInt();
- for (int i = 0, j = 0, k = 0; i < x;) {
- if (Math.abs(i - x/2) + j == x/2) { //判断输出是否是此行的最后一个"*"
- if (Math.abs(i - x/2) > k) { //用来制造第一行和最后一行的空格
- System.out.print(" ");
- k++;
- } else { //换行并初始化j和k
- System.out.println("*");
- j = 0;
- k = 0;
- i++;
- }
- } else {
- if (Math.abs(i - x/2) > k) { //用来打印除第一行和最后一行的空格
- System.out.print(" ");
- k++;
- }else if(j==0){
- System.out.print("* ");
- j++;
- }
- else {
- System.out.print(" "); //后一个*可以改成空格
- j++;
- }
- }
- }
复制代码 效果图:
|