A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有人知道该怎么打印菱形,等腰三角形,心形吗?

9 个回复

正序浏览
daikaisheng 发表于 2016-9-17 22:53
public class heart {
        public static void main(String[] args) {
                printHeart();

谢谢你同学,你真厉害!
回复 使用道具 举报
风轻云淡139 发表于 2016-9-12 00:03
能不能用for循环之类的打印心形。

public class heart {
        public static void main(String[] args) {
                printHeart();
        }

        public static void printHeart() {
                for (int i = 0; i < 3; i++) {
                        printBlank(5 - i * 2);
                        if (i == 0) {
                                printStar(7 - 1);
                                printBlank(5 + 2);
                                printStar(7 - 1);
                        } else {
                                printStar(7 + i * 3);
                                printBlank(5 - i * 2);
                                printStar(7 + i * 3);
                        }
                        System.out.println();
                }
                for (int i = 0; i < 3; i++) {
                        printStar(29);
                        System.out.println();
                }
                for (int i = 0; i < 8; i++) {
                        if (i == 7) {
                                printBlank(i * 2);
                                printStar(1);
                        } else {
                                printBlank(1 + i * 2);
                                printStar(27 - i * 4);
                        }
                        System.out.println();
                }
        }

        private static void printStar(int n) {
                for (int i = 0; i < n; i++) {
                        System.out.print("*");
                }
        }

        private static void printBlank(int n) {
                for (int i = 0; i < n; i++) {
                        System.out.print(" ");
                }
        }

}
回复 使用道具 举报
daikaisheng 发表于 2016-9-11 16:41
心形最简单的打印方式

public static void main (String []args){

能不能用for循环之类的打印心形。
回复 使用道具 举报
心形最简单的打印方式

public static void main (String []args){
System.out.println("      *****       ***** ");
System.out.println("   *********   ********* ");
System.out.println(" ************ ************ ");
System.out.println("***************************");
System.out.println("***************************");
System.out.println("***************************");
System.out.println(" ************************* ");
System.out.println("   ********************* ");
System.out.println("     ***************** ");
System.out.println("      ************* ");
System.out.println("        ********* ");
System.out.println("          ***** ");
System.out.println("            * ");
}

回复 使用道具 举报
刚写的一个打印菱形的程序,利用二维数组来存储,仅提供参考,应该还有更好的方法!
[Java] 纯文本查看 复制代码
import java.util.Scanner;
/*
 * 打印菱形的程序
 */
public class Diamond {
	//定义静态成员变量用于接收用户输入行数
	private static int line;
	
	public static void main(String[] args) {
		while(true){
			Scanner sc = new Scanner(System.in);
			System.out.println("请输入要打印菱形的行数,必须为奇数:");
			String input = sc.nextLine();
			//如果输入为quit结束该程序
			if("quit".equals(input))
				break;
			//如果输入为数字,转成int类型的整数
			else{
				line = Integer.parseInt(input);
			}
			//假如输入为偶数,重新输入,直到为奇数才执行后面初始化和打印语句
			if(line % 2 == 0){
				System.out.println("输入错误,请重新输入!!");
				continue;
			}
			//定义一个二维数组来存储形状,类似一个二维的地图
			String[][] strs = new String[line][line];
			//将二维数组元素全部赋值为" "
			initMap(strs);
			//在二维数组中存储菱形的图案
			initDiamond(strs);
			//遍历二维数组,打印菱形图案
			print(strs);
		}
	}
	
	public static void initMap(String[][] strs){
		for (int i = 0; i < strs.length; i++) {
			for (int j = 0; j < strs[i].length; j++) {
				strs[i][j] = " ";
			}
		}
	}
	public static void print(String[][] strs){
		for (int i = 0; i < strs.length; i++) {
			for (int j = 0; j < strs[i].length; j++) {
				System.out.print(strs[i][j]);
			}
			System.out.println();
		}
	}
	public static void initDiamond(String[][] strs){
		for (int i = 0; i < strs.length; i++) {
			int a = line >> 1;
			int k = 0;
			if(i > a){
				k = line -i - 1;
				for(int j = a - k; j < a + k + 1; j++){
					strs[i][j] = "*";
				}
			}else{
				for(int j = a - i; j < a + i + 1; j++){
					strs[i][j] = "*";
				}
			}
		}
	}

}
回复 使用道具 举报
菱形       
public static void main(String[] args) {
                for (int i = 0; i < 5; i++) {
                        for (int j = i + 1; j < 5; j++) {
                                System.out.print(" ");
                        }
                        for (int k = 4; k >= 0 ; k--) {
                                System.out.print("* ");
                        }
                        System.out.println();
                }
        }
回复 使用道具 举报
什么是等腰三角形?
回复 使用道具 举报
这是等腰的,菱形的不会,同求
for (inti=0; i<5; i++)
{
         for (int j=i+1; j<5; j++) {
                System.out.print(" ");
        }
      for (int k=0; k<=i; k++) {
                System.out.print("* ");
        }
        System.out.println();
}
回复 使用道具 举报
哇,忘了..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马