重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
一:设计思路:
创新互联专注网站设计,以设计驱动企业价值的持续增长,网站,看似简单却每一个企业都需要——设计,看似简洁却是每一位设计师的心血 十年来,我们只专注做网站。认真对待每一个客户,我们不用口头的语言来吹擂我们的优秀,1000多家的成功案例见证着我们的成长。
1、空心的等腰三角形,用*作为三角形的边,用空格做格式控制。
2、第一行输出一个*号,且要放在正中央,具体位置需要根据三角形的高度来确定。
3、因为是等腰三角形,所以每一行由*号组成的有效字符串长度比上一行多2个。
4、综合2、3,该三角形的*号间的有效字符串长度,按1、3、5、7...规律变化
5、所以,第一行输出的*号位置由三角形的高决定,设高度为h,则第一行*号位置为第(2*h-1)/2+1,简化后为h(因为单数/2后的0.5在int型变量计算中被忽略)。
6、空心的实现中,从第二行输出*号后开始插入空格,个数每行加2,直到最后一行,不包含最后一行。
二:实现方法
1、定义三角形的高,改变该值,可以改变三角形的大小。
2、根据高度,将*号放在对应h位置,用空格做格式控制,空格个数每行-1。
3、如果是第二行且不是最后一行(大于1且小于h),在输出*号后,输出空格,以后每行多输出两个空格
4、最后一行全部输出*号
//java代码:设计空心等腰三角形
public class IsoscelesTriangleTest {
/**
* 一:设计思路:
* 1、空心的等腰三角形,用*作为三角形的边,用空格做格式控制。
* 2、第一行输出一个*号,且要放在正中央,具体位置需要根据三角形的高度来确定。
* 3、因为是等腰三角形,所以每一行由*号组成的有效字符串长度比上一行多2个。
* 4、综合2、3,该三角形的*号间的有效字符串长度,按1、3、5、7...规律变化
* 5、所以,第一行输出的*号位置由三角形的高决定,设高度为h,则第一行*号位置为第(2*h-1)/2+1,
* 简化后为h(因为单数/2后的0.5在int型变量计算中被忽略)。
* 6、空心的实现中,从第二行输出*号后开始插入空格,个数每行加2,直到最后一行,不包含最后一行。
* 二:实现方法
* 1、定义三角形的高,改变该值,可以改变三角形的大小。
* 2、根据高度,将*号放在对应h位置,用空格做格式控制,空格个数每行-1。
* 3、如果是第二行且不是最后一行(大于1且小于h),在输出*号后,输出空格,以后每行多输出两个空格
* 4、最后一行全部输出*号
* 三:图示,5层空心等腰三角形
* *
* * *
* * *
* * *
* *********
*
* */
//定义三角形的高度,改变此值,可改变三角形的大小,必须大于等于2
public static final int HEIGHT = 9;
public static void main(String[] args) {
// TODO Auto-generated method stub
int count = HEIGHT - 1; //定义输出空格个数,初值为第一行要输出的空格个数
System.out.println("空心等腰三角形,高度:"+HEIGHT);
for(int row = 1;row = HEIGHT;row++,count--){
//输出空格
for(int i = 0;i count;i++){
System.out.print(" ");
}
System.out.print("*");
//是第一行,则直接换行,最后一行输出全部*号,否则从第二行开始输出空格,每行+2
if(row == 1){
System.out.println();
}else if(row == HEIGHT){
for(int i = 0;i row*2-2;i++){
System.out.print("*");
}
System.out.println();
}else if(row 1 row HEIGHT){
for(int i = 0;i row*2-3;i++){
System.out.print(" ");
}
System.out.println("*");
}
}
}
}
运行结果图:
理解思路和实现方法后,阅读代码会简单些,注意格式控制中的算式,都是有规律可循的。
public static void main(String[] args){
for(int i=0;i6;i++){
for(int j=0;j=i;j++){
if(i!=5){
if(j==0||j==i){
System.out.print("*");
}else{
System.out.print(" ");
}
}else{
System.out.print("*");
}
}
System.out.println();
}
}
希望对你有些帮助,算法可能不太简洁.
class Triangle extends drawings//空心三角形类
{
void draw(Graphics2D g2d)
{g2d.setPaint(new Color(R,G,B));
g2d.setStroke(new BasicStroke(stroke,
BasicStroke.CAP_ROUND,BasicStroke.JOIN_BEVEL));
g2d.drawLine((int)((x1+x2)/2),Math.min(y1,y2),Math.max(x1,x2),Math.max(y1,y2));
g2d.drawLine(Math.max(x1,x2),Math.max(y1,y2),Math.min(x1,x2),Math.max(y1,y2));
g2d.drawLine(Math.min(x1,x2),Math.max(y1,y2),(int)((x1+x2)/2),Math.min(y1,y2));
}
}
以上是通过绘制三条直线作为三角形的三条边来绘制三角形.
class fillTriangle extends drawings//实心三角形
{
void draw(Graphics2D g2d)
{g2d.setPaint(new Color(R,G,B));
g2d.setStroke(new BasicStroke(stroke));
int mx=(int)((x1+x2)/2);
int[] x={mx,Math.max(x1,x2),Math.min(x1,x2)};
int[] y={Math.min(y1,y2),Math.max(y1,y2),Math.max(y1,y2)};
g2d.fillPolygon(x,y,3);
}
}
以上是用填充多边形的方式填充一个三角形,如果把最后的:g2d.fillPolygon(x,y,3)改为g2d.drawPolygon(x,y,3); 则是以绘制多边形的方式绘制空心三角形.
这里说明一下:因为(x1,y1,x2,y2)只能确定一个矩形区域,即鼠标拉动的起点和终点确定的矩形区域所以可以有多种方式确定三角形的三个顶点,我这个用的三个顶点是:
点1( (x1+x2)/2, min(y) ) 点2( max(x),max(y) ) 点3( min(x),max(y) )
你的补充内容太多了,没心情看啊,太累了
package com.tx.test;
public class Kong {
public static void main(String[] args) {
for(int i=0; i10; i++) {
for(int j=0; j2*i +1; j++) {
if(j==0 || j == 2*i || i==9 ) {
System.out.print("*");
}else {
System.out.print(" ");//两个空格
}
}
System.out.println();
}
}
}
结果:
以下是实心、空心、倒立,三种等边三角形的代码:
实心等边三角形:
public static void main(String[] args) {
int n = 5;
String c = "0";
String x = "*";
for (int i = 0; i n; i++) {
for (int k = 0; k n - i - 1; k++) {
System.out.print(c);
}
for (int k = 0; k i + 1; k++) {
System.out.print(x);
}
for (int k = 0; k i; k++) {
System.out.print(x);
}
/**
* 一下注释掉的代码属于多余的代码,本程序只需要分成三块实现
*/
// for (int k = 0; k n - i - 1; k++) {
// System.out.print(c);
// }
System.out.println();
}
}
空心等边三角形:
public static void main(String[] args) {
int n = 6;
String c = " ";
String x = "*";
for (int i = 0; i n; i++) {
for (int j = 0; j 2 * n; j++) {
if (j == (n - i) || j == (n + i)) {
System.out.print(x);
} else {
System.out.print(c);
}
}
System.out.println();
}
for(int j=0;j2*(n+1)-1;j++){
System.out.print(x);
}
}
倒等边三角形:
public static void main(String[] args) {
int n = 5;
String c = " ";
String x = "*";
for(int j=0;j2*(n+1)-1;j++){
System.out.print(x);
}
System.out.println();
for (int i = 0; i n; i++) {
for (int j = 0; j 2 * n; j++) {
if (j == i+1 || j == (2*n - i-1)) {
System.out.print(x);
} else {
System.out.print(c);
}
}
System.out.println();
}
}
public class diamond {
public static void main(String[] args) {
int i,j;
System.out.print("请输入三角层数:");
Scanner scanner=new Scanner(System.in);
int frequency=scanner.nextInt();
for(i=1;i=frequency;i++)
{
for(j=frequency-i;j0;j--)
{
System.out.print(" ");
}
for(j=1;ji*2;j++)
{
if (j==1||j==2*i-1||i==frequency) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.print("\n");
}
}
}