使用java打印心型、圆形图案的实现代码
作者:清风丿自来 发布时间:2021-08-30 19:50:45
标签:java,打印,心型,圆形
相信对于打印三角形都没什么难度,只需要利用for循环嵌套使用就行
但是对于打印圆形和三角形不同因为到圆心距离相等的点一般不会横坐标和纵坐标都为整数
打印爱心
爱心的公式 (x²+y²-1)³-x²*y³=0
调用此方法即可打印爱心图案
/**
*打印心形
*/
public static void aiXin(){
for(float y = (float) 1.5;y>-1.5;y -=0.1) {
for(float x= (float) -1.5;x<1.5;x+= 0.05){
float a = x*x+y*y-1;
if((a*a*a-x*x*y*y*y)<=0.0) {
System.out.print("^");
}
else
System.out.print(" ");
}
System.out.println();
}
}
打印圆形
打印圆形主要就是所有点到圆心的距离为半径即可
public static void circle(){
int r=15;//圆形的半径
for (int y = 0; y <= 2 * r; y += 2) {//y的步长为2,改变y的步长可以将圆形变成椭圆
int x = (int)Math.round(r - Math.sqrt(2 * r * y - y * y));
int len = 2 * (r - x);
for (int i = 0; i <= x; i++) {
System.out.print(' ');
}
System.out.print('*');
for (int j = 0; j <= len; j++) {
System.out.print(' ');
}
System.out.println('*');
}
}
效果如下
如果想打印实心的只需要把条件修改即可
for (int j = 0; j <= len; j++) {
System.out.print('*');
}
此循环是打印圆形里面部分,输出字符就是实心圆
补充知识:在Java中打印金字塔图案
1、问题描述
打印出金字塔图案,如图1所示。
2、问题分析
这时一个很经典的循环应用的问题。我们都知道,打印输出的时候,都是从
最左端输出,而这里第一个三角形符号是在最中间,这实际是因为三角形之前有很多空格。当我们使用圆圈来表示空格,实际的输出效果应该是图2的形式。
分析图2,我们可以发现这个题目的奥秘。
(1) 确定程序框架
程序框架代码如下:
publicclass Ch1_1
{
public static void main(String[] args)
{
*********
for(i = 1; i<= 5; i++) //循环5次,打印5行
{
//打印若干空格
//打印若干符号
}
}
}
(2) 寻找空格和符号规律
表1 空格和符号规律
行数 | 空格数 | 符号数 | ||
1 | 4 | 5-1 | 1 | 1*2-1 |
2 | 3 | 5-2 | 3 | 2*2-1 |
3 | 2 | 5-3 | 5 | 3*2-1 |
4 | 1 | 5-4 | 7 | 4*2-1 |
5 | 0 | 5-5 | 9 | 5*2-1 |
规律 | 依次递减1 | 5-行数 | 依次递增2 | 行数*2-1 |
(3) 打印空格数
由于每行空格数有“5-行数”的规律,对应代码如下:
for(i =1; i<= n; i++)
{
for(j = 1; j <= n – i; j++) //根据外层行号,输出符号左边空格
System.out.println(“ ”);
}
(4) 打印符号数
由于每行符号数有着“行数*2-1”的规律,对应代码如下:
for(i =1; i<= n; i++)
{
for(k = 1; j <= i * 2 -1; k++) //根据外层行号,输出符号数
System.out.println(“*”);
}
(5) 完整程序
importjava.util.Scanner;
publicclass Ch1_1
{
public static void main(String[] args)
{
int i, j, k, n;
Scanner input = new Scanner(System.in);
System.out.print("请输入金字塔层数:");
n = input.nextInt();
//外层循环控制层数
for(i = 1; i <= n; i++)
{
//根据外层行号,输出星号左边的空格
for(j = 1; j <= n - i; j++)
System.out.printf(" ");
//根据外层行号,输出星号个数
for(k = 1; k <= 2 * i -1; k++)
System.out.print("*");
//一行结束,换行
System.out.print("\n");
}
}
}
/*
*注:Java中的print、printf、println
*/
程序运行结果,见图3。
(6) 扩展
倒金字塔
importjava.util.Scanner;
publicclass Ch1_1
{
public static void main(String[] args)
{
int i, j, k, n;
Scanner input = new Scanner(System.in);
System.out.print("请输入倒金字塔层数:");
n = input.nextInt();
//外层循环控制层数
for(i = 1; i <= n; i++)
{
//根据外层行号,输出星号左边的空格
for(j = 1; j <= i - 1; j++)
System.out.printf(" ");
//根据外层行号,输出星号个数
for(k = 1; k <= 2 * (n - i) -1;k++)
System.out.print("*");
//一行结束,换行
System.out.print("\n");
}
}
}
直角三角形
importjava.util.Scanner;
publicclass Ch1_1
{
public static void main(String[] args)
{
int i, j, k, n;
Scanner input = new Scanner(System.in);
System.out.print("请输入直角三角形层数:");
n = input.nextInt();
//外层循环控制层数
for(i = 1; i <= n; i++)
{
//根据外层行号,输出星号个数
for(k = 1; k <= n - i + 1; k++)
System.out.print("*");
//一行结束,换行
System.out.print("\n");
}
}
}
来源:https://blog.csdn.net/qq_39098813/article/details/79781396


猜你喜欢
- Android自定义View仿探探卡片滑动这种效果网上有很多人已经讲解了实现思路,大多都用的是RecyclerView来实现的,但是我们今天
- Struts提供了一个更简单的方式来处理未捕获的异常,并将用户重定向到一个专门的错误页面。您可以轻松地Struts配置到不同的异常有不同的错
- using System;using System.Drawing;namespace PubLib{ /// <summa
- mybatis的环境搭建:1、创建maven工程并且导入坐标:即我们需要在pop.xml文件中添加我们需要的依赖具体方法:搜索maven中央
- selectById方法根据id,查询记录public void updateRecycleAssayBusinessItemCharge(
- Android动态修改ToolBar的Menu菜单效果图实现实现很简单,就是一个具有3个Action的Menu,在我们滑动到不同状态的时候,
- 实例如下所示:System.Net.WebClient myWebClient = new System.Net.WebClient();
- 在前面我们已经完成了ActiveX控件的开发,接下来的就是发布它了。  
- SpringBoot加载application.properties配置文件的坑事情的起因是这样的一次,本人在现场升级程序,升级完成后进行测
- 一、PointCut接口/* * Copyright 2002-2012 the original author or authors. *
- springboot 启动排除某些bean的注入问题:最近做项目的时候,需要引入其他的jar。然后还需要扫描这些jar里的某些bean。于是
- 本文实例为大家分享了Java实现二分查找的变种,供大家参考,具体内容如下普通二分查找:先回顾一下普通的二分查找注意:二分查找有这样一个问题:
- 前言在Kotlin中四种可见性修饰符:private、protected、internal、public,如果没有显示指定修饰符的话,默认可
- 无论游戏,应用,网站,都少不了评分控件。在Android SDK 中提供了 RatingBar控件来实现相应的工作。<RatingBa
- 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供
- cookie机制和session机制的区别具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持
- 1、如果只是一个简单的springboot demo,用以下配置就行新建config类```import org.springf
- 在android中做图像镜像有很多方法,今天算是学习了! 两种方法如下: //方法一 Matrix matrix = new Matrix(
- 如何获取yml、properties参数1、使用@Value()注解1.1 配置数据如:在properties.yml文件配置如下数据mes
- C++对string进行大小写转换操作方法方法一:使用C语言之前的方法,使用函数,进行转换#include <iostream>