java学习笔记26-52 基本语法:输入,判断,循环,随机数

前言
b站java课程学习笔记整理。
b站视频: 黑马程序员全套Java教程_Java基础入门视频教程,零基础小白自学Java必备教程
27. 两只老虎
案例:两只老虎一只体重180kg,一只200kg,判断两只老虎体重是否相同。
分析:定义两个变量保存老虎的体重,用三元运算符实现老虎体重的判断,并输出结果。
代码:
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);
}
}
遇到的错误: true
和 false
首字母大写了,没有用分号结尾, boolean
无法转换成String
。
28. 三个和尚
需求:一个寺庙里住着三个和尚, 分别为150cm, 210cm, 165cm,找出三个和尚的最高身高。
分析: 定义三个变量,用两个三元运算符排序。
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
实现数据输入:
import java.util.Scanner; //第一步,导包。导包的动作必须出现在类定义的上边
Scanner sc = new Scanner(System.in); //第二步,创建对象,sc是变量名
int i = sc.nextInt(); //第三步,接收数据,i是变量名
30. 三个和尚(数据输入版)
需求:同上,输入三个和尚身高。
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结构
格式:
if(关系表达式){
语句体;
}
关系表达式为true
则执行语句体,false
不执行。
33. if else结构
格式:
if(关系表达式){
语句体1;
} else{
语句体2;
}
关系表达式为true
则执行语句体1,false
执行语句体2。
34. 案例:奇偶数
需求,任意给出一个整数,判断是奇数还是偶数,并输出。
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嵌套结构
格式
if(关系表达式){
语句体1;
} else if{
语句体2;
}
...
else{
语句体n+1;
}
多种选择,禁止套娃。
36. 案例:考试奖励
需求:根据不同的考试成绩得到不同的礼物奖励。考试成绩由键盘输入。
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语句
格式:
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
...
default:
语句体n+1;
break;
}
default
表示所有情况都不匹配时,执行此处。
38. 案例:春夏秋冬
需求:一年由12个月,分属于春夏秋冬4个季节,键盘录入一个月份,用程序判断是哪个季节并输出。
case穿透: case
后不加break
, 那它会继续往下执行,直到遇到break
。
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循环语句格式
for (初始化语句; 条件判断语句; 条件控制语句){
循环体语句;
}
实例:
public class ForLoop{
public static void main(String[] args){
for (int i = 1; i < 6; i++){
System.out.println("第"+ i +"次打印");
}
}
}
40. 实例:输出数据
要求:顺序和倒叙输出五个数。
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的和,并把结果在控制台输出。
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之间的偶数和,并把结果在控制台输出。
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 代码
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. 实例:统计
实例:统计水仙花数的个数。
太简单了,不说了。
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循环结构
基本格式:
while (条件判断语句){
循环体语句;
条件控制语句(可选,没有就一直循环);
}
可以和for循环等价转换。
46. 实例:珠穆朗玛峰
实例:珠穆朗玛峰(8844.43m=8844430mm),假如有一张足够大的纸,它的厚度是0.1mm,需要折叠多少次才能达到珠穆朗玛峰的高度?
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循环
格式
初始化语句;
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
作用: 产生一个随机数。
import java.util.Random; //导包
Random r = new Random();
int number = r.nextInt(10); //获取数据的范围:[0,10)包括0,不包括10。
52. 猜数字
程序生成1-100数字,实用程序猜出这个数字多少,大了就提示大了,小了就提示小了,中了就退出。
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;
}
}
}
}
不难。