*
***
*****
*******
********* 像这种题目 我遇到很多,可是一点思路都没有,不知道该怎么上手,只是知道用for循环和if语句,知道他的运行顺序,但是不知道为什么要这么写?求哪位大神好心给我讲解下。谢谢
***
*****
*******
********* 像这种题目 我遇到很多,可是一点思路都没有,不知道该怎么上手,只是知道用for循环和if语句,知道他的运行顺序,但是不知道为什么要这么写?求哪位大神好心给我讲解下。谢谢
public static void main(String argc[]) {
int t;
java.util.Scanner san = new java.util.Scanner(System.in);
System.out.print("请输入行数: ");
t = san.nextInt();
for (int i = 1; i <= t; i++) {
for (int f = 1; f <= (t - i); f++)
System.out.print(" ");
for (int ff = 1; ff <= (2 * i - 1); ff++)
System.out.print("*");
System.out.println();
}
}
}
请输入行数: 5
*
***
*****
*******
*********
给你看看我之前写的一个例子,里面注释还挺详细的!楼主加油控制wholeCnt和leftCnt的值,能打印出不同的效果:-------
leftCnt = wholeCnt
0000*
000**
00***
0****
0****
00***
000**
0000*leftCnt = 0
*0000
**000
***00
****0
*****
*****
****0
***00
**000
*0000leftCnt = wholeCnt / 2
00*00
0***0
*****
*****
0***0
00*00
public class DrawGraph {
public static final char SRC_CONTANT_CH = '0';
public static final char OBJ_CONTANT_CH = '*';
public static void main(String[] args) {
int wholeCnt = 5; // 每行的字符数
int leftCnt = 2; // 第一行从左边第几个开始画
printWhole(wholeCnt, leftCnt);
}
/**
* Description: 打印全部<br>
* 打印图形的重点在于,控制填充字符的begin和end,然后有规律地增加和减少
*/
public static void printWhole(int wholeCnt, int leftCnt) {
// 保证leftCnt和wholeCnt的准确性
if (leftCnt < 0 || leftCnt > wholeCnt) { return; }
int begin = 0;
int end = wholeCnt;
// 打印上半部分
for(int i = 0; i < wholeCnt; i++) {
begin = leftCnt - i; // begin从leftCnt开始,往前填充
end = leftCnt + i + 1; // end从leftCnt开始,往后填充
printOneLine(wholeCnt, begin, end);
// 当填充满一行的时候,退出
if (begin <= 0 && end >= wholeCnt) { break; }
}
// 打印下半部分,从原来的begin和end逐个递减就可以了
for(;;begin++,end--) {
printOneLine(wholeCnt, begin, end);
// 当填充满一行的时候,退出
if (begin == leftCnt) { break; }
}
}
/**
* Description: 打印一行<br>
*/
public static void printOneLine(int n, int begin, int end) {
if (begin <= end) {
// 前端/后端的范围校验
if (begin < 0) { begin = 0; }
if (end > n) { end = n; }
// 通过数组填充来实现拼接
char[] chs = new char[n];
Arrays.fill(chs, SRC_CONTANT_CH);
Arrays.fill(chs, begin, end, OBJ_CONTANT_CH);
System.out.println(chs);
}
}
}
public class Test3 { public static void main(String[] args) {
printXX(5);
} private static void printXX(int line) {
for(int i=1;i<=line;i++){
for(int j=1;j<=line-i;j++){
System.out.print(" ");
}
for(int k=1;k<=2*i-1;k++){
System.out.print("*");
}
System.out.println();
}
}}
/*我是菜鸟*/
public OutPutStyle(){
}
/*****
*三角形
*
***/
public void printSJX(int lineN){
for(int i=1;i<=lineN;i++){
print(lineN-i," ");
print(i,"* ");
System.out.println();
}
}
/*****
*菱形
*
***/
public void printLX(int lineN){
int centerN=lineN/2 +1;
printSJX(centerN);
for(int i=1;i<=centerN;i++){
print(i," ");
print(centerN-i,"* ");
System.out.println();
}
}
/*****
*
*矩形
***/
public void printJX(int rowN,int lineN){
for(int i=1;i<=rowN;i++){
print(lineN,"* ");
System.out.println();
}
}
/*****
*
*
***/
private void print(int num, String info){
for(int i=0;i<num;i++){
System.out.print(info);
}
}
}