内容纲要
134讲2道题1.打印正倒金字塔 2.打印9*9乘法表
package main.dayone;
import java.util.Scanner;
public class Triangle extends Mode{
public static void main(String[] args) {
//输出正金字塔和倒金字塔:
//金字塔层数:5;
//种类:1.金字塔 2.倒金字塔
// * 4个空格, 1个* =2*1-1
// *** 3个空格, 3个* =2*2-1
// ***** 2个空格, 5个* =2*3-1
// ******* 1个空格, 7个* =2*4-1
//********* 0个空格, 9个* =2*5-1
//定义变量i来确定层数,j来确模式。
//创建一个自增的层数,用来控制 * 的个数的输出
//
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入金字塔类型:1代表正金字塔,2代表倒金字塔,3代表空心菱形:");
int j = myScanner.nextInt();
System.out.println("请输入金字塔层数:");
int count = myScanner.nextInt();
//三角形种类的选择
switch(j){
case 1:
Mode.regularTriangle(count);
break;
case 2:
Mode.invertTriangle(count);
break;
case 3:
Mode.diamond(count);
break;
default:
System.out.println("你输入的有误:");
}
}
}
class Mode extends Diamond{
static void regularTriangle(int count){
//正金字塔
for (int i = 1; i <= count; i++) { //i作为自增层用来表示第一层、第二层。。。
for (int x = count - i; x >= 0; x--) { //x--用于迭代,检测下一循环x是否小于0,i在循环外并不能影响到这个循环的迭代
System.out.print(" ");
}
for (int star = 1; star <= 2 * i - 1; star++) {
System.out.print("*");
}
System.out.println();
}
//倒金字塔
//********* //9个*=2^count-1 0个空格
// ******* //7个*=2^i-1
// *****
// ***
// *
}
static void invertTriangle(int count) {
for (int i = 1; i <= count; i++) {
for (int space = i - 1; space >= 0; space--) {
System.out.print(" ");
}
for (int star = 1; star <= 2 * (count - i) + 1; star++) {
System.out.print("*");
}
System.out.println();
}
}
}
class Diamond{
//打印出菱形
// *
// * *
// * *
// * *
// * *
// * *
// * *
// * *
// *
//思路分析1.先打印出上三角,后打印出下三角。for循环打印。
// 提前定义层数(边界最远到顶端的层)count
// 先思考打印实心菱形。 -->此项完成
// 思考怎么挖空心
static void diamond(int count){
for(int i = 1;i <= count;i++) {// 层数辅助下方打印三角形菱形变量控制
int space = 0;
do{
space++;
System.out.print(" ");
}while(space <= count -i);// do...while循环控制打印空格
for (int star = 1; star <= 2 * i - 1; star++) { //此处循环打印*
if(star <= 2*i - 2 && star >= 2){ //有意思,控制else只输出第一个*和最后一个*,
// 其余都输出空格
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
for(int i = count;i >= 1;i--){
int space = 0;
do{
space++;
System.out.print(" ");//打印输出*前空格
}while(space <= count - i + 1);//do...while打印输出空格
for(int star = (i-1)*2 - 1;star >= 1 ;star--){//打印输出*(根据动态层数i的变化)
if(star >= 2 && star <= (i-1)*2 - 2) {
System.out.print(" ");
}else{
System.out.print("*");
}
}
System.out.println();
}
}
}
package main.dayone;
public class Multiply {
public static void main(String[] args) {
//打印9*9乘法表
//使用循环结构
//思路分析
//1.先定义一个递增的变量i与j,i <= 9; j <= 9;
//2.通过for循环或者while? 或者do...while循环实现自动计算生成
//3.嵌套实现
//4.解决间隔问题。
int i = 1;
int j;
for(;i <= 9; i++) {
for (j = 1; j <= i; j++) {
System.out.print(i + "*" + j + "=" + i * j);
System.out.print(" ");
}
System.out.println("");
}
}
}