韩顺平Java基础作业——金字塔和菱形打印:
由简单的直角三角形、实心金字塔再到空心金子塔。包含了while语句实现的代码(小白,自己敲的)
最后拓展到空心菱形
直角三角形
while语句我加了Scanner使参数灵活,for循环的可自行改善:
直接上代码
import java.util.Scanner;
//直角三角形
/*
*
**
***
****
* */
public class Stars {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// int totalLevel = sc.nextInt();
// int i = 0;
// while (i<totalLevel){
// int j = 0;
// while(j<=i){
// System.out.print("*");
// j++;
// }
// System.out.println();
// i++;
for (int i = 1; i <= 5; i++){
for (int j = 1; j <= i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
实心金字塔
import java.util.Scanner;
//实心金字塔
/*
*
***
*****
*******
*********
*/
public class Stars02 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入你的层数:");
// int totalLevel = sc.nextInt();
// int i = 0;//定义变量i作为金字塔层数
// while (i<totalLevel){
// int j = totalLevel;//定义变量j=层数,作为当前层要加的空格数量
// while(j>i){
// j--;
// //最后一个空格要开始遍历*号
// if (j==i){
// int k = 0;
// //星号个数为等差数列,2n-1
// while(k<(2*(i+1)-1)){
// System.out.print("*");
// k++;
// }
// }else{
// System.out.print(" ");
// }
// }
// System.out.println();
// i++;
// }
for (int i = 1; i <= 5; i++){
//在输出*之前, 还有输出 对应空格 = 总层数-当前层
for (int k = 1;k <= 5-i; k++){
System.out.print(" ");
}
//控制打印每层的*个数
for (int j = 1; j <= 2*i-1;j++){
System.out.print("*");
}
System.out.println();
}
}
}
空心金字塔
import java.util.Scanner;
// 空心金字塔
/*
*
* *
* *
*******
*/
public class Stars03 {
public static void main(String[] args) {
// Scanner sc = new Scanner(System.in);
// System.out.println("请输入你的层数:");
// int totalLevel = sc.nextInt();
// int i = 0;//定义变量i作为金字塔层数
// while (i<totalLevel){
// int j = totalLevel;//定义变量j=层数,作为当前层要加的空格数量
// while(j>i){
// j--;
// //最后一个空格要开始遍历*号
// if (j==i){
// int k = 0;
// //星号个数为等差数列,2n-1
// int count = 2*(i+1)-1;
// while(k<count){
// if (i == totalLevel-1){
// System.out.print("*");
// }else if (k == 0 || k == count-1){
// System.out.print("*");
// }else{
// System.out.print(" ");
// }
// k++;
// }
// }else{
// System.out.print(" ");
// }
// }
// System.out.println();
// i++;
// }
Scanner sc = new Scanner(System.in);
System.out.println("请输入总层数:");
int totalLevel = sc.nextInt();
for (int i = 1; i <= totalLevel; i++){
//在输出*之前, 还有输出 对应空格 = 总层数-当前层
for (int k = 1;k <= totalLevel-i; k++){
System.out.print(" ");
}
//控制打印每层的*个数
for (int j = 1; j <= 2*i-1;j++){
if (j == 1 || j == 2 * i - 1 || i == totalLevel){
System.out.print("*");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
}
空心菱形
空心菱形的输入只能奇数层,因为我觉得输入偶数层,便成了六边形了。
优化的话,简单点可以加一个if判断层数为奇数还是偶数,再进行打印。这步就交给你们了。哈哈哈哈
import java.util.Scanner;
//打印空心菱形
public class Rhombus {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入总层数:");
int totalLevel = sc.nextInt();
for (int i = 1; i <= totalLevel; i++) {
//先打印菱形上半部
if (i <= totalLevel / 2 + 1){
//在输出*之前, 还有输出 对应空格 = 总层数-当前层
for (int k = 1; k <= (totalLevel / 2 + 1) - i; k++) {
System.out.print(" ");
}
//控制打印每层的*个数
for (int j = 1; j <= 2*i-1;j++){
if (j == 1 || j == 2 * i - 1 || i == totalLevel){
System.out.print("*");
}else{
System.out.print(" ");
}
}
}else {//打印菱形下半部
for (int k = 1; k <= i - (totalLevel / 2 + 1); k++) {
System.out.print(" ");
}
//控制打印每层的*个数
//剩余totalLevel - i + 1层,当前层打印2*(totalLevel - i + 1) - 1个*
//totalLevel - i + 1相当于2n-1中的n
for (int j = 1; j <= 2*(totalLevel - i + 1) - 1;j++){
if (j == 1 || j == 2*(totalLevel - i + 1) - 1){
System.out.print("*");
}else{
System.out.print(" ");
}
}
}
System.out.println();
}
}
}
第一次发csdn,大家一起加油!