我在B站上大学😄
学习至:狂神说Java
Switch选择结构
语法:
switch(变量){
case value1:
语句1;
// break; //可选
case value2:
语句2;
// break; //可选
...
default: //可选
语句n;
}
注意:不写break会有case穿透现象,某value x满足条件,如果该语句中没有break,则不仅会执行语 句x,下方的语句x+1等也会执行,直至出现break跳出或执行到结尾为止。
从Java SE 7开始,switch支持String类型
eg1:
public class Switch01 {
public static void main(String[] args) {
char grade = 'C';
switch (grade){
case 'A':
System.out.println("优秀");
break;
case 'B':
System.out.println("良好");
break;
case 'C':
System.out.println("中等");
break;
case 'D':
System.out.println("及格");
break;
case 'E':
System.out.println("不及格");
break;
default:
System.out.println("未知等级");
}
}
}
中等
进程已结束,退出代码0
eg2:
public class Switch02 {
public static void main(String[] args) {
String a = "清华大学";
switch ("清华大学"){
case "上海交通大学":
System.out.println("上海交通大学");
break;
case "南京大学":
System.out.println("南京大学");
break;
case "复旦大学":
System.out.println("复旦大学");
break;
case "浙江大学":
System.out.println("浙江大学");
break;
case "中国科学技术大学":
System.out.println("中国科学技术大学");
break;
case "清华大学":
System.out.println("清华大学");
break;
default:
System.out.println("其他大学");
}
}
}
清华大学
进程已结束,退出代码0
反编译:将上述生成的class在IDEA中直接打开即可实现反编译
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
public class Switch02 {
public Switch03() {
}
public static void main(String[] args) {
String a = "清华大学";
switch ("清华大学") {
case "上海交通大学":
System.out.println("上海交通大学");
break;
case "南京大学":
System.out.println("南京大学");
break;
case "复旦大学":
System.out.println("复旦大学");
break;
case "浙江大学":
System.out.println("浙江大学");
break;
case "中国科学技术大学":
System.out.println("中国科学技术大学");
break;
case "清华大学":
System.out.println("清华大学");
break;
default:
System.out.println("其他大学");
}
}
}
循环结构
while循环
语法:
while(布尔表达式){
...; //循环类容
}
eg:
public class WhileDemo01 {
public static void main(String[] args) {
//计算1+2+3+....+100的值
int i = 0;
int sum =0;
while (i<=100){
sum += i;
i++;
}
System.out.println("1+2+3+....+100=" + sum);
}
}
1+2+3+....+100=5050
进程已结束,退出代码0
do...while循环
语法:
do{
...;//循环类容
}while(布尔表达式);
do...while先执行后判断,至少执行一次;
while 先判断后执行
eg:
public class WhileDemo02 {
public static void main(String[] args) {
//计算1+2+3+....+100的值
int i = 0;
int sum =0;
do {
sum += i;
i++;
}
while (i<=100);
System.out.println("1+2+3+....+100=" + sum);
}
}
1+2+3+....+100=5050
进程已结束,退出代码0
For循环
语法:
for(初始值; 条件判断; 更新){
...;//循环内容
}
For循环语句是支持迭代的的一种通用结构,是最有效、最灵活的循环结构;
For循环执行的次数是在执行前就确定的。
IDEA中的快捷输入:
数字 . fori 回车 :可以快速生成一个对应数字循环次数的递增for循环;
数字 . forr 回车 :可以快速生成一个对应数字循环次数的递减for循环
eg1:
public class ForDemo01 {
public static void main(String[] args) {
int sum1 =0;
int sum2 =0;
//计算0~100之间奇数的和与偶数的和
for (int i = 1; i < 100; i= i + 2) {
sum1 += i;
}
for (int i = 2; i <= 100; i= i + 2) {
sum2 += i;
}
/*for (int i = 0; i <= 100; i++) {
if (i%2!=0){
sum1 += i;
}
else{
sum2 += i;
}
}*/
System.out.println("0~100之间的奇数和为: "+sum1);
System.out.println("0~100之间的偶数和为: "+sum2);
}
}
0~100之间的奇数和为: 2500
0~100之间的偶数和为: 2550
进程已结束,退出代码0
eg2:
public class ForDemo02 {
public static void main(String[] args) {
//用for循环输出1~100之间能被5整除的数,每行输出3个
int j = 0;
for (int i = 1; i <= 100; i++) {
if (i%5==0){
System.out.print( i + "\t\t");
j++;
if (j % 3 == 0){
System.out.println();
}
}
else {
continue;
}
}
}
}
5 10 15
20 25 30
35 40 45
50 55 60
65 70 75
80 85 90
95 100
进程已结束,退出代码0
eg3:
public class ForDemo03 {
public static void main(String[] args) {
//打印九九乘法表
for (int i = 1; i < 10; i++) {
for (int j=1; j <= i; j++) {
System.out.print(j +"×" + i + "="+ i*j + "\t\t");
}
System.out.println();
}
}
}
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
1×4=4 2×4=8 3×4=12 4×4=16
1×5=5 2×5=10 3×5=15 4×5=20 5×5=25
1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36
1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49
1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
进程已结束,退出代码0
增强For循环
主要应用于集合和数组。用于遍历;
语法:
for(声明语句: 表达式){
...;
}
eg:
public class ForDemo04 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50,60};
//用于遍历数组
for(int x: numbers) {
System.out.println(x);
}
}
}
10
20
30
40
50
60
进程已结束,退出代码0
break continue goto
break:强行退出循环结构;
continue:退出当前的循环,直接进入下一次循环(所以continue放在循环语句末尾是无意义的);
goto: 尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用,Java没有goto。然而,在break和continue这两个关键字的身 上,我们仍然能看出一些goto的影 子---带标签的break和continue。
“标签”是指后面跟一个冒号的标识符,例如: label 对Java来说唯一用到标签的地方是在循环语 句之前。而在循环之前设置标签的唯一理由是:我们希望在其 中嵌套另-个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中 断到存在标签的地方。
eg1:
public class break01 {
public static void main(String[] args) {
int i=0;
while (i<10){
i++;
if (i==6){
break;
}
System.out.println(i);
}
}
}//i未递增至9,在等于6时推出循环
1
2
3
4
5
进程已结束,退出代码0
eg2:
public class continue01 {
public static void main(String[] args) {
//输出1~100不能被10整除的数,三个一行
int j=0;
for (int i = 0; i < 100; i++) {
if (i%10==0){
continue;
}
System.out.print(i+"\t\t");
j++;
if (j%9==0){
System.out.println();
}
}
}
}
1 2 3 4 5 6 7 8 9
11 12 13 14 15 16 17 18 19
21 22 23 24 25 26 27 28 29
31 32 33 34 35 36 37 38 39
41 42 43 44 45 46 47 48 49
51 52 53 54 55 56 57 58 59
61 62 63 64 65 66 67 68 69
71 72 73 74 75 76 77 78 79
81 82 83 84 85 86 87 88 89
91 92 93 94 95 96 97 98 99
进程已结束,退出代码0
eg3:
public class LabelDemo {
public static void main(String[] args) {
//打印1~100所有的质数,注意 1 既不是质数也不是合数
loop1: for (int i = 2; i <= 100; i++) {
loop2: for(int j = 2;j <= i/2;j++){//比一个数的0.5倍大的数不可能是该数的因数
if(i % j==0){
continue loop1;
}
}
System.out.print(i + " ");
}
}
}
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
进程已结束,退出代码0
例题1
打印八行杨辉三角
public class Test1 {
public static void main(String[] args) {
//用循环语句打印8行杨辉三角形
/*
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
*/
for (int i = 0; i < 8; i++) {
//排版,打印空格
for (int k = 0; k < 8 - i - 1; k++) {
System.out.print(" ");//相邻两行同一位置的数差两个空格
}
//打印每行数值
for (int j = 0; j <= i; j++) {
System.out.print( factorial(i)/((factorial(j)) * (factorial(i-j))) +" ");
//组合数计算:C(m,n) = n!/( (n-m)!*m! )
//行内两数间三个空格
}
System.out.println();
}
}
//阶乘计算
private static int factorial(int x) {
if (x==1 || x==0){
return 1;
}
else{
return x * factorial(x-1);
}
}
}
或
public class Test2 {
public static void main(String[] args) {
//打印8行杨辉三角形
for (int i = 0; i < 8; i++) {
//打印空格
for (int k = 0; k < 8 - i - 1; k++) {
System.out.print(" ");
}
//打印每行数值
for (int j = 0; j <= i; j++) {
System.out.print( factorial(i,j) +" ");
}
System.out.println();
}
}
//组合数计算:C(m,n+1) = C(m,n) + C(m-1,n)
private static int factorial(int x, int y) {
if (y==0 || x==y){
return 1;
}
else{
return factorial(x-1, y) + factorial(x-1,y-1);
}
}
}
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
进程已结束,退出代码0
例题2
用*号打印五行三角形
public class Test03 {
public static void main(String[] args) {
/* 用循环语句打印三角形
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
*/
for (int i = 0; i < 5; i++) {
for (int j = 4; j > i; j--) {
System.out.print(" ");
}
for (int j = 0; j <= i; j++) {
System.out.print("* ");
}
for (int j = 0; j < i; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
进程已结束,退出代码0
例题3
用*打印10行倒三角
public class Text03 {
public static void main(String[] args) {
for (int y = 10; y >= 1; y--) {
for (int x = 10; x > y; x--) {
System.out.print(" ");
}
for (int x = 1; x <= 2 * y - 1; x++) {
System.out.print("* ");
}
System.out.println();
}
}
}
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
进程已结束,退出代码0
例题4
打印三行对称等腰梯形
public class Test04 {
public static void main(String[] args) {
for (int i = 1; i <= 3; i++) {
for (int j = 3; j > i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= 2*(i+2)-1; j++) {
System.out.print("* ");
}
for (int j = 3; j >= i; j--) {
System.out.print(" ");
}
for (int j = 1; j <= 2*(i+2)-1; j++) {
System.out.print("* ");
}
System.out.println();
}
}
}
* * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
进程已结束,退出代码0
例题5
用*号打印一颗爱心❤
public class Text05 {
public static void main(String[] args) {
int size = 10; // 心形下侧高度
//打印上侧
for (int y = size / 2; y <= size; y += 2) {
for (int x = 1; x < size - y; x += 2) {
System.out.print(" ");
}
for (int x = 1; x <= y; x++) {
System.out.print("* ");
}
for (int x = 1; x <= size - y; x++) {
System.out.print(" ");
}
for (int x = 1; x <= y; x++) {
System.out.print("* ");
}
System.out.println();
}
//打印下侧
for (int y = size; y >= 1; y--) {
for (int x = size; x > y; x--) {
System.out.print(" ");
}
for (int x = 1; x <= 2 * y - 1; x++) {
System.out.print("* ");
}
System.out.println();
}
}
}
* * * * * * * * * *
* * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * *
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
进程已结束,退出代码0