很多初入程序员世界的新人小白都和我一样都会遇到
这样
这样
还有这样的题目
这个时候有一个重要的解题思路就很重要,一旦知道这一类型题的思想很多题都迎刃而解。
我会把这些题的源代码放上来供参考。
第一类 ' * ' 三角形
class Test{
public static void main(String[] args){
//嵌套循环
for(int line=1;line<=4;line++){
for(int i=1;i<=8;i++){
System.out.print("*");
}
System.out.println();
}
/*
* 1
** 2
*** 3
**** 4
***** 5
******* 6
******** 7
循环体 *
*/
for(int line=1;line<=7;line++){
for(int i=1;i<=line;i++){
System.out.print("*");
}
System.out.println();
}
/* i j
* 1 1
** 2 1 2
*** 3 1 2 3
**** 4 1 2 3 4
***** 5 1 2 3 4 5
****** 6 1 2 3 4 5 6
***** 7 1 2 3 4 5
**** 8 1 2 3 4
*** 9 1 2 3
** 10 1 2
* 11 1
j<=i && j<=12-i
*/
for(int i=1;i<=11;i++){
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
** -4 2 1 2
*** -3 3 1 2 3
**** -2 4 1 2 3 4
***** -1 5 1 2 3 4 5
****** 0 6 1 2 3 4 5 6
***** 1 7 1 2 3 4 5
**** 2 8 1 2 3 4
*** 3 9 1 2 3
** 4 10 1 2
* 5 11 1
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("*");
}
System.out.println();
}
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
* * -4 2 1 2
* * * -3 3 1 2 3
* * * * -2 4 1 2 3 4
* * * * * -1 5 1 2 3 4 5
* * * * * * 0 6 1 2 3 4 5 6
* * * * * 1 7 1 2 3 4 5
* * * * 2 8 1 2 3 4
* * * 3 9 1 2 3
* * 4 10 1 2
* 5 11 1
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
System.out.print("* ");
}
System.out.println();
}
/* k=|i-6| |k| 当前行的最大的空格数
k i j
* -5 1 1
* * -4 2 1 2
* * -3 3 1 2 3
* * -2 4 1 2 3 4
* * -1 5 1 2 3 4 5
* * 0 6 1 2 3 4 5 6
* * 1 7 1 2 3 4 5
* * 2 8 1 2 3 4
* * 3 9 1 2 3
* * 4 10 1 2
* 5 11 1
j==1 j==i j+i==12
*/
for(int i=1;i<=11;i++){
for(int k=1;k<=Math.abs(i-6);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&j<=12-i;j++){
if(j==1||j==i||j+i==12){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
第二类数字三角形
class text{
public static void main(String[] args){
for(int i=1;i<7;i++){
for(int j=1;j<=i;j++){
System.out.print(j);
}
System.out.println();
}
System.out.println("~~~~~~~~~~~~~~~~~~~");
for(int i=1;i<7;i++){
for(int j=1;j<8-i;j++){
System.out.print(j);
}
System.out.println();
}
System.out.println("~~~~~~~~~~~~~~~~~~~");
for(int i=1;i<7;i++){
for(int j=1;j<=7-i;j++){
System.out.print(" ");
}
for(int k=i;k>0;k--){
System.out.print(k);
}
System.out.println();
}
System.out.println("~~~~~~~~~~~~~~~~~~~");
for(int i=1;i<7;i++){
for(int j=1;j<=i;j++){
System.out.print(" ");
}
for(int k=1;k<8-i;k++){
System.out.print(k);
}
System.out.println();
}
}
}
第三类数字金字塔
import java.util.Scanner;
class text{
public static void main(String[] args){
Scanner input=new Scanner(System.in);
System.out.print("输入金字塔的高度:");
int n =input.nextInt();
for(int i=0;i<=n;i++){
for (int j = n; j >i; j--) {
System.out.print(" ");
}
for (int j = i; j >=1; j--) {
System.out.print(j);
}
for (int j = 2; j <=i; j++) {
System.out.print(j);
}
System.out.println();
}
}
}
import java.util.Scanner;
public class text{
public static void main(String[] args){
int i=0,n=8,m=0,s;
while(n>0){
s=1;
for(i=4*(n-1); i>0; --i)
System.out.print(" ");
System.out.print(" ");
for(i=0; i<=m; ++i){
s*=2;
System.out.print(s/2+" ");
if(s<10)
System.out.print(" ");
else if(s>9&&s/2!=64)
System.out.print(" ");
else if(s/2>99)
System.out.print(" ");
}
for(i=m; i>=m; --i){
s/=2;
if(m==3||m==4||m==6)
System.out.print(" ");
if(s/2!=0){
if(s/2<10)
System.out.print(s/2+" ");
else if(s/2>9){
System.out.print(s/2+" ");
if(s/4<9)
System.out.print(" ");
}
else
System.out.print(s/2);
System.out.print(" ");}
}
for(i=m-1; i>0; --i){
s/=2;
if(s/2<10)
System.out.print(s/2+" ");
else if(s/2>9){
System.out.print(s/2+" ");
if(s/4<9)
System.out.print(" ");
}
else
System.out.print(s/2);
System.out.print(" ");
}
System.out.println();
--n;
++m;
}
}
}