黑马程序员:for综合图形整合结晶


package Graph;

public class Test8 {
public static void main(String[] args) {
// 自定义行列,行数必须大于等于列数,形状才符合
int row = 24;
int colunm = 24;
int row2 = row / 2;
int colunm2 = colunm / 2;

System.out.println("********************************************");
System.out.println("");
//***********上半部分左边右边大结合
for (int i = 0, jL = 0, k = 0, jR = 0, j = 0; i < row; i++) {

// 左边,上
// j_l左边起始的指针
// j总指针,从0到尽头16-1
// k遍历列
while (j < colunm2 - 1) {
for (k = 0; k < colunm2 - jL + 1; k++) {
while (jL < colunm2 - i) {
System.out.print("1");
jL++;
j++;
}
// jL已经完成使命,不再使用
j++;
System.out.print("2");
}

}

// 右边,下
// jR右边起始为0的指针
while (j >= colunm2 - 1 && j < colunm - 1) {
for (k = 0; k < colunm - j + 2;) {
while (jR < i + 1) {
System.out.print("3");
jR++;
j++;
}
j++;
System.out.print("4");
}
}

// 每换一行,指针清零
jL = 0;
jR = 0;
j = 0;
System.out.println("");

// i到达中间的时候
if (i > row2 - 2 && i < row - 1) {
int row_D = row - row2;
down(row_D, colunm2, colunm);
break;
}
}

}
//下半部分左边右边大结合
private static void down(int row, int colunm2, int colunm) {

int b = 0;
for (int i = 0, jL = 0, k = 0, jR = 0, j = 0; i < row; i++) {

// 当处于右下左边时
while (j < colunm2 - 1) {
for (k = 0; k < colunm2 - i; k++) {
while (jL < i + 1) {
System.out.print("5");
jL++;
j++;
}
j++;
System.out.print("6");

}
}

// 当处于右下右边时
while (j > colunm2 && j < colunm) {
for (k = 0; k < colunm - jR - row + 1; k++) {
while (jR < colunm2 - i) {
System.out.print("7");
j++;
jR++;
}
j++;

System.out.print("8");
}
}

// 每换一行,指针清零
jL = 0;
jR = 0;
j = 0;

// 换行
System.out.println("");
}
}

}



package Graph;

public class Triangle {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int row = 8;
int colunm = 8;
int f = 1;
int row2 = row / 2;
int colunm2 = colunm / 2;
// 1****************左上三角
System.out.println("--1左上三角--" + f++ + "---");
for (int i = 0; i < row; i++) {
for (int j = 0; j < colunm - i; j++) {
System.out.print("*");
}
System.out.println("");
}

System.out.println("");
System.out.println("");

// 2****************左下三角
System.out.println("-2左下三角---" + f++ + "---");
for (int i = 0; i < row; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println("");
}

System.out.println("");
System.out.println("");

// 3****************左下右上组合,把-符号改了就是右上了
System.out.println("-3左下右上组合---" + f++ + "---");
for (int i = 0; i < row; i++) {
// 换行的时候,每次做内层的时候j必须要清0
int head = 0;
// 外层循环只要循环他要循环的就可以了,用边界条件限制
// 因为是先做内层循环的事情的
for (int j = 0; j < colunm - i; j++) {
while (head < i) {
System.out.print("-");
head++;
}
System.out.print("*");
}
System.out.println("");
}

System.out.println("");
System.out.println("");

// 4****************右下左上组合,把-符号改了就是右下了
System.out.println("-4右下左上组合---" + f++ + "---");
for (int i = 0, j = 0; i < row; i++) {
// 换行的时候,每次做内层的时候j必须要清0
j = 0;
for (int k = 0; k < colunm - j + 1; k++) {
while (j < colunm - i) {
System.out.print("-");
j++;
}
System.out.print("*");
}
System.out.println("");
}
System.out.println("");
System.out.println("");
}

}



package Heima001_DumpAndDown200;


public class Test2 {
public static void main(String[] args) {
//自定义行列
int row = 7;
int colunm = 13;
int [][] a = new int [row][colunm];
for(int i = 0, j = 0; i < row;i++){
//如果大于最后一行-2,即到达最后一行-1,则按第2规律执行,否则按第1规律执行
if(i > row-3){
for(j = i; j < colunm - i;j++){
a[i][j] = 1;
}
continue;
}

int head = 0;

//元素行与列位置相同,遍历列,遍历长度小于最右边元素长度
for(j = i; j < colunm - i;j++){

//当元素下标等于3,到达空白处;下标等于最右边元素位置-3,可以到达空白处
if(head == 2 || head == (colunm - 1) -2*i -2){
a[i][j] = 0;
}else{
a[i][j] = 1;
}
//前面下标++,换行时,重置为0
head++;
}
}

//倒置输出上半部
for(int i = row - 1; i > 0; i--){
for(int j = 0; j < colunm; j++){
if(a[i][j] == 1){
System.out.print("*");
}else if(a[i][j] == 0 ){
System.out.print(" ");
}
}
System.out.println();
}
//输出下半部
for(int i = 0; i < row; i++){
for(int j = 0; j < colunm; j++){
if(a[i][j] == 1){
System.out.print("*");
}else if(a[i][j] == 0 ){
System.out.print(" ");
}
}
System.out.println();
}
}
}

//修改了一下代码,把图中end下标去除了,将head判断处改为head == (colunm - 1) -2*i -2



真心花了不少时间,不过还是在摸索中懂了很多东西
for的联系到此为止了
其实上面的方法并不是很好,效率可能还行,但是我觉得二维数组做起来会更简单
当年在学校学C语言的时候,作业还是copy别人的,现在自己弄了一下其实也没太难,只是有些麻烦
有感兴趣的,可以拿去参考,欢迎拍砖
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值