前言

b站java课程学习笔记整理。

b站视频: 黑马程序员全套Java教程_Java基础入门视频教程,零基础小白自学Java必备教程

27. 两只老虎

案例:两只老虎一只体重180kg,一只200kg,判断两只老虎体重是否相同。

分析:定义两个变量保存老虎的体重,用三元运算符实现老虎体重的判断,并输出结果。

代码:

1
2
3
4
5
6
7
8
public class TwoTigers {
public static void main(String[] args){
int weightTiger1 = 180;
int weightTiger2 = 200;
boolean result = (weightTiger1 == weightTiger2) ? true : false;
System.out.println("老虎1比老虎2重么?答案是:" + result);
}
}

遇到的错误: truefalse 首字母大写了,没有用分号结尾, boolean无法转换成String

28. 三个和尚

需求:一个寺庙里住着三个和尚, 分别为150cm, 210cm, 165cm,找出三个和尚的最高身高。

分析: 定义三个变量,用两个三元运算符排序。

1
2
3
4
5
6
7
8
9
10
public class ThreeMonks{
public static void main (String[] args){
int monk_a = 150;
int monk_b = 210;
int monk_c = 165;
int result_1 = monk_a >= monk_b ? monk_a : monk_b;
int result_2 = result_1 >= monk_c ? result_1 : monk_c;
System.out.println("最高的身高是" + result_2);
}
}

(想学好java,得忘掉python……)

29. 数据输入

使用Scanner实现数据输入:

1
2
3
import java.util.Scanner; //第一步,导包。导包的动作必须出现在类定义的上边
Scanner sc = new Scanner(System.in); //第二步,创建对象,sc是变量名
int i = sc.nextInt(); //第三步,接收数据,i是变量名

30. 三个和尚(数据输入版)

需求:同上,输入三个和尚身高。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
public class ThreeMonks{
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入和尚a的身高");
int monk_a = sc.nextInt();
System.out.println("请输入和尚b的身高");
int monk_b = sc.nextInt();
System.out.println("请输入和尚c的身高");
int monk_c = sc.nextInt();
int result_1 = monk_a >= monk_b ? monk_a : monk_b;
int result_2 = result_1 >= monk_c ? result_1 : monk_c;
System.out.println("最高的身高是" + result_2);
}
}

注意: sc声明一次就行。

31. 顺序结构

流程控制语句分为顺序结构,分支结构以及循环结构。顺序结构依次执行就好了。

32. if结构

格式:

1
2
3
if(关系表达式){
语句体;
}

关系表达式为true则执行语句体,false不执行。

33. if else结构

格式:

1
2
3
4
5
if(关系表达式){
语句体1;
} else{
语句体2;
}

关系表达式为true则执行语句体1,false执行语句体2。

34. 案例:奇偶数

需求,任意给出一个整数,判断是奇数还是偶数,并输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Scanner;
public class OddEven {
public static void main (String[] args){
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
int result = number % 2;
if(result == 0){
System.out.println("该数为偶数");
} else{
System.out.println("该数为奇数");
}
}
}

35.if else if嵌套结构

格式

1
2
3
4
5
6
7
8
9
if(关系表达式){
语句体1;
} else if{
语句体2;
}
...
else{
语句体n+1;
}

多种选择,禁止套娃。

36. 案例:考试奖励

需求:根据不同的考试成绩得到不同的礼物奖励。考试成绩由键盘输入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
public class ExamReward{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
if (score >= 95 && score <= 100){
System.out.println("得到一辆自行车");
} else if (score >=90 && score <=94){
System.out.println("奖励去游乐场玩");
} else if (score >=80 && score <=89){
System.out.println("奖励一个大黄蜂玩具");
} else if (score >=0 && score <=79){
System.out.println("奖励一个大比斗");
} else{
System.out.println("请输入正确的成绩");
}
}
}

37. Switch语句

格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
switch(表达式){
case1:
语句体1;
break;
case2:
语句体2;
break;
...
default:
语句体n+1;
break;

}

default表示所有情况都不匹配时,执行此处。

38. 案例:春夏秋冬

需求:一年由12个月,分属于春夏秋冬4个季节,键盘录入一个月份,用程序判断是哪个季节并输出。

case穿透: case后不加break, 那它会继续往下执行,直到遇到break

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Scanner;
public class Seasons{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int input = sc.nextInt();
switch(input){
case 12:
case 1:
case 2:
System.out.println("这是冬季");
break;
case 3:
case 4:
case 5:
System.out.println("这是春季");
break;
case 6:
case 7:
case 8:
System.out.println("这是夏季");
break;
case 9:
case 10:
case 11:
System.out.println("这是秋季");
break;
default:
System.out.println("输入有误");
break;
}
}
}

妙啊!

39. for循环语句

39.1 循环结构的组成部分

循环结构的组成:

初始化语句:用于表示循环开启时的起始状态。循环开始的时候什么样。

条件判断语句: 用于表示循环反复执行的条件。判断循环是否能一直执行下去。

循环体语句:用于表示循环反复执行的内容。循环执行要干的事。

条件控制语句:用于表示循环执行中每次变化的内容。控制循环能否执行下去。

39.2 for循环语句格式

1
2
3
for (初始化语句; 条件判断语句; 条件控制语句){
循环体语句;
}

实例:

1
2
3
4
5
6
7
public class ForLoop{
public static void main(String[] args){
for (int i = 1; i < 6; i++){
System.out.println("第"+ i +"次打印");
}
}
}

40. 实例:输出数据

要求:顺序和倒叙输出五个数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ForLoop{
public static void main(String[] args){
int count = 0;
for (int i = 1; i < 6; i++){
count += 1;
System.out.println("顺序第"+ count +"次打印的结果为"+ i);
}
count = 0;
for (int j = 5; j > 0; j--){
count += 1;
System.out.println("倒叙第"+ count +"次打印的结果为" + j);
}
}
}

41. 实例:求和

要求:求1-5的和,并把结果在控制台输出。

1
2
3
4
5
6
7
8
public class SumAll{
public static void main(String[] args){
int sum = 0;
for (int i = 1; i < 6; i++){
sum += i; }
System.out.println("和是"+sum);
}
}

42. 实例:求偶数和

要求:求1-100之间的偶数和,并把结果在控制台输出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class SumAll{
public static void main(String[] args){
int sum = 0;
for (int i = 1; i < 101; i++){
if (i% 2 == 0){
sum += i;
} else{
continue; //这里其实可以不用else
}

}
System.out.println("和为"+sum);

}
}

43. 实例:水仙花

要求:控制台输出所有的水仙花数。(三位数,个位十位百位的立方和等于原数)

43.1 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class NarcissusNum{
public static void main(String[] args){
for (int i = 100; i < 1000; i++){
int hundred = i / 100;
int ten = i / 10 % 10;
int one = i % 100 %10;
int sum = (hundred*hundred*hundred)+(ten*ten*ten)+(one*one*one);
int sum2 = (int) Math.pow(hundred,3)+(int) Math.pow(ten,3)+(int) Math.pow(one,3);

if (sum == i){
System.out.println("第一种方法数字是"+i);
}
if (sum2 == i){
System.out.println("第二种方法,数字是"+i);
}


}

}
}

43.2 总结遇到的坑

java中 a^3 并不能表示a的三次方!使用Math.pow(a,b)更方便(真的方便了吗……)。百位数是直接求100的商,十位数是求10的商后对10取余,个位数是求100的余后对10取余。

其实个位直接对10取余也行,更方便快捷。

44. 实例:统计

实例:统计水仙花数的个数。

太简单了,不说了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class NarcissusNum{
public static void main(String[] args){
int count = 0;
for (int i = 100; i < 1000; i++){
int hundred = i / 100;
int ten = i / 10 % 10;
int one = i % 100 %10;
int sum = (hundred*hundred*hundred)+(ten*ten*ten)+(one*one*one);

if (sum == i){
System.out.println("数字是"+i);
count++;
}
}
System.out.println("水仙花数有"+count+"个");
}
}

45. while循环结构

基本格式:

1
2
3
4
while (条件判断语句){
循环体语句;
条件控制语句(可选,没有就一直循环);
}

可以和for循环等价转换。

46. 实例:珠穆朗玛峰

实例:珠穆朗玛峰(8844.43m=8844430mm),假如有一张足够大的纸,它的厚度是0.1mm,需要折叠多少次才能达到珠穆朗玛峰的高度?

1
2
3
4
5
6
7
8
9
10
11
12
public class Mountain{
public static void main(String[] args){
double paper = 0.1;
int count = 0;
while(paper <= 8844430){
paper = paper * 2;
System.out.println(paper);
count++;
}
System.out.println("一共折叠了"+ count +"次。");
}
}

折叠而已!不是乘方!加2就行!

47. do…while循环

格式

1
2
3
4
5
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件判断语句,可选);

48. 三种循环区别

48.1 区别:

do...while会不管三七二十一先执行一遍循环体,再判断要不要循环。而两外两种是先判断,符合条件再循环。

for循环中的条件控制i是局部变量,出了循环后无法调用了。while循环的是全局变量,要在进入循环前说明。

48.2 死循环:

for循环里参数不填。for(;;).

while循环直接while(true).

do while循环 do{...}while(true).

49. 跳转控制语句

跳过某次循环: continue;

中止循环: break;

50. 循环嵌套

套娃。

51. Random

作用: 产生一个随机数。

1
2
3
4
import java.util.Random; //导包
Random r = new Random();
int number = r.nextInt(10); //获取数据的范围:[0,10)包括0,不包括10。

52. 猜数字

程序生成1-100数字,实用程序猜出这个数字多少,大了就提示大了,小了就提示小了,中了就退出。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.util.Random;
import java.util.Scanner;
public class GuessNum{
public static void main(String[] args){
Random r = new Random();
Scanner sc = new Scanner(System.in);
int number = r.nextInt(101);
while(true){
System.out.println("请输入你猜的数字!");
int input = sc.nextInt();
if(input > number){
System.out.println("大!");
continue;
}else if (input < number){
System.out.println("小!");
continue;
}
else{
System.out.println("猜对了!");
break;
}
}
}
}

不难。