流程控制语句
-
println()小括号能写什么内容
最终属于某种数据类型的字面值!
-
print和println区别?
println换行 print不换行
println小括号可以不写内容 print小括号必须写内容
算术
+ - * / % ++ --
赋值
= += -= *= /= %=
比较
> < >= <= != ==
逻辑
| & ! ^ && ||
三目
数据类型 变量名 = 条件表达式 ? 字面值1 : 字面值2;
boolean flag = true ? true:false;
一、转义符
/ 斜杠 \反斜杠(转义符)
package cn.E_106.JavaSe.day05.operator01;
public class Demo01 {
public static void main(String[] args) {
// \ 转义符,转换本来的含义,”本来跟前面的“是一对,经过转义,” 变成要输出的内容,而不再是符号的结束!
System.out.println("\"");
System.out.println('\'');
System.out.println('"');
System.out.println("'");
//把字母t转义成tab
System.out.println("名字\t小金");
System.out.println("名字"+'\t'+"小木");
// u表示编码 4e2d --- 1010111010101010 --- 中
System.out.println('\u4e2d');
//n字母 \n表示换行
System.out.println("中国\n美国");
System.out.println("\\");
System.out.println('\\');
}
}
二、流程控制语句(main方法体中)
- 条件语句
- if语句
语法:if(条件表达式){if体 }
条件表达式:结果是boolean类型字面值
if体:main方法体可以写什么,if体就可以写什么(局部变量,输出语句)
含义:条件表达式成立,执行if体所有内容!条件表达式不成立,不执行if体
案例:如果考试及格,妈妈带我去游乐场!
public class Demo01 {
public static void main(String[] args) {
//案例:如果考试及格,吃腰子!
double score=30;//score变量表示考试成绩!
if(score>=60){
System.out.println("吃腰子。。。");
}
}
}
注意问题:
1.省略大括号问题
变量作用域:变量在那个范围可以输出使用!
变量在什么体中创建的,就是在什么体中可以使用!
1.1 只能写一句(一个分号)
1.2 写的这句不能是一个变量的创建
public class Demo02 {
public static void main(String[] args) {
//案例:如果考试及格,吃腰子!
double score=30;//score变量表示考试成绩!
if(score>=60)
// int a=10;
System.out.println("吃腰子。。。");
System.out.println("吃俩腰子。。。");
}
}
2. if()后面不能有分号
//错误的示范!!!!!!
public class Demo03 {
public static void main(String[] args) {
//案例:如果考试及格,吃腰子!
double score=30;//score变量表示考试成绩!
if(score>=60);{
System.out.println("吃腰子。。。");
}
}
}
图例:
- if-else语句
语法:if(条件表达式){if体}else{else体}
else体:什么都能写
理解:条件表达式成立,执行if体,条件表达式不成立,执行else体
案例:如果考试及格吃腰子,否则去洗脚!
public class Demo01 {
public static void main(String[] args) {
//案例:如果考试及格吃腰子,否则去洗脚!
// if如果 关键字
// else否则 关键字
double score=68.6;
//第一种
if(score>=60){
System.out.println("吃腰子。。。");
}else {
System.out.println("去洗脚。。。");
}
//第二种
System.out.println(score>=60?"吃腰子。。。":"去洗脚。。。");
//第三种
if(score>=60){
System.out.println("吃腰子。。。");
}
if(score<60){
System.out.println("去洗脚。。。");
}
}
}
总结:如果是两种情况,那么可以用三目和if-else语句都可以的!
if语句是万能的,任何情况都可以使用if语句!
注意问题:
1.大括号可以省略
public class Demo02 {
public static void main(String[] args) {
//如果今天是星期天,我们去打游戏,否则我们写代码
int day = 7;
if(day==7)
System.out.println("我去打游戏。。。");
else
System.out.println("我去写代码。。。");
}
}
2.if()后面没有分号
图例:
- if-else-if多分支语句
语法:if(条1){体1} else if(条2){体1} else if(条3){体3}
... else{else体 }
()里都是if的条件表达式 {}都是if体 else{} else体
理解:如果条1成立,执行体1,程序结束
如果条1不成立,继续判断条2,如果条2还不成立,继续判断
如果所有的条件都不成立,执行else体,如果期间遇到一个成立,执 行那个成立的,程序就结束了
案例:芝麻信用等级!
package cn.E_106.JavaSe.day05.if_else_if_demo;
public class Demo01 {
public static void main(String[] args) {
//Ctrl+/
// 芝麻信用分共分为5个等级
// 芝麻信用分最低是350分,最高是950分
// 信用较差:芝麻分在350分-550分之间
// 信用中等:芝麻分在550分-600分之间
// 信用良好:芝麻分在600分-650分之间
// 信用优秀:芝麻分在650分-700分之间
// 信用极好:芝麻分在700分-950分之间
int score=670;
if(score>=350 && score<550){
System.out.println("信用较差");
}else if(score>=550 && score<600){
System.out.println("信用中等");
}else if(score>=600 && score<650){
System.out.println("信用良好");
}else if(score>=650 && score<700){
System.out.println("信用优秀");
}else if(score>=700 && score<950){
System.out.println("信用极好");
}else {
System.out.println("不在信用范围。。。");
}
}
}
package cn.E_106.JavaSe.day05.if_else_if_demo;
public class Demo02 {
public static void main(String[] args) {
/**
* 考试等级
* 90到100 优秀
* 80到90 良好
* 70到80 中等
* 60到70 及格
* 60以下 不及格
*/
int score=86;
if(score>=90){
System.out.println("优秀!");
}else if(score>=80){
System.out.println("良好!");
}else if(score>=70){
System.out.println("中等!");
}else if(score>=60){
System.out.println("及格!");
}else {
System.out.println("不及格!");
}
}
}
if语句可以取代if-else-if多分支!
public class Demo03 {
public static void main(String[] args) {
//Ctrl+/
// 芝麻信用分共分为5个等级
// 芝麻信用分最低是350分,最高是950分
// 信用较差:芝麻分在350分-550分之间
// 信用中等:芝麻分在550分-600分之间
// 信用良好:芝麻分在600分-650分之间
// 信用优秀:芝麻分在650分-700分之间
// 信用极好:芝麻分在700分-950分之间
int score=670;
if(score>=350 && score<550){
System.out.println("信用较差");
}
if(score>=550 && score<600){
System.out.println("信用中等");
}
if(score>=600 && score<650){
System.out.println("信用良好");
}
if(score>=650 && score<700){
System.out.println("信用优秀");
}
if(score>=700 && score<=950){
System.out.println("信用极好");
}
if(score<350 || score>950){
System.out.println("不在信用范围。。。");
}
}
}
注意问题: 大括号可以省略
图例:
- switch语句
语法: switch(字面值){
case 字面值1:
输出语句,变量。。。
break;
case 字面值2:
输出语句,变量。。。
break;
case 字面值3:
输出语句,变量。。。
break;
...
default:
输出语句,其他。。。
}
解释:swtich 开关 关键字
case 可能,情况 关键字
break 结束,跳过
default 默认的 关键字
理解:switch的字面值跟case的字面值相等,就执行case语句,如果所有的 case 跟switch的字面值不相等,执行 default语句
案例:日计划
周一 写代码
周二 看电影
周三 打篮球
周四 约会
周五 爬山
其他 不在计划范围
package cn.E_106.JavaSe.day05.switch_demo;
public class Demo01 {
public static void main(String[] args) {
// 周一 写代码
// 周二 看电影
// 周三 打篮球
// 周四 约会
// 周五 爬山
// 其他 不在计划范围
int day = 3;//表示周三
switch (day){
case 1:
System.out.println("写代码");
break;
case 2:
System.out.println("看电影");
break;
case 3:
System.out.println("打篮球");
break;
case 4:
System.out.println("约会");
break;
case 5:
System.out.println("爬山");
break;
default:
System.out.println("不在计划范围。。。");
}
}
}
注意的问题:
1.case穿透(忘记写break)
如果switch语句都不写break,从成立的那个case一直穿透到最后!
package cn.E_106.JavaSe.day05.switch_demo;
public class Demo02 {
public static void main(String[] args) {
// 周一 写代码
// 周二 看电影
// 周三 打篮球
// 周四 约会
// 周五 爬山
// 其他 不在计划范围
int day = 30;//表示周三
switch (day){
case 1:
System.out.println("写代码");
case 2:
System.out.println("看电影");
default:
System.out.println("不在计划范围。。。");
case 3:
System.out.println("打篮球");
case 4:
System.out.println("约会");
case 5:
System.out.println("爬山");
}
}
}
2.case并列
案例:
春天-----3月 4月 5月
夏天-----6月 7月 8月
秋天-----9月 10月 11月
冬天-----12月 1月 2月
package cn.E_106.JavaSe.day05.switch_demo;
public class Demo03 {
public static void main(String[] args) {
// 案例:
// 春天-----3月 4月 5月
// 夏天-----6月 7月 8月
// 秋天-----9月 10月 11月
// 冬天-----12月 1月 2月
int month = 7;
switch (month){
case 3: case 4: case 5: //month如果是3或者4或者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;
case 12: case 1: case 2:
System.out.println("冬天");
break;
default:
System.out.println("没有这个季节!");
}
}
}
总结:switch可以写的if-else-if也可以写,if语句也可以写!
三、Scanner控制台输入(复制)
import java.util.Scanner; 放在类上面 !
// import关键字 引入导入 java目录 util目录 Scanner类
// Scanner是语言设计者写的一个类,让我们来使用的!
======获取到字符串=======
package cn.E_106.JavaSe.day05.scanner_demo;
import java.util.Scanner;
public class TestScanner01 {
public static void main(String[] args) {
//1.创建Scanner对象---用户可以在控制台输入内容了
Scanner sc=new Scanner(System.in);
//2.提示信息
System.out.println("系统:请输入您的名字?");
//3.获取到用户输入的字符串数据!
// name获取到用户输入的内容
String name = sc.next();
System.out.println("系统:您的名字是"+name);
}
}
=====获取整数=====
package cn.E_106.JavaSe.day05.scanner_demo;
import java.util.Scanner;
public class TestScanner02 {
public static void main(String[] args) {
//1.创建Scanner对象
Scanner sc=new Scanner(System.in);
//2.提示信息
System.out.println("系统:请输入您的年龄?");
//3.获取到用户输入的整数年龄
//age用户输入的年龄
int age = sc.nextInt();
System.out.println("系统:您的年龄是"+age);
}
}
===获取小数====
package cn.E_106.JavaSe.day05.scanner_demo;
import java.util.Scanner;
public class TestScanner03 {
public static void main(String[] args) {
//1.创建Scanner对象
Scanner sc=new Scanner(System.in);
//2.提示
System.out.println("系统:请输入您的身高!");
//3.获取用户输入的身高 double
double height = sc.nextDouble();
System.out.println("系统:您的身高是"+height+"m");
}
}
BMI 计算器
获取到用户的 身高和体重,只要知道bmi的计算公式,就可以给用户结果!
(BMI)=体重(kg)÷身高^2
18.5 <= bmi < 23 正常
23 < bmi < 25 前期肥胖
25<=bmi<30 1级肥胖
30<=bmi <40 2级肥胖
40 <=bmi 3级肥胖
package cn.E_106.JavaSe.day05.scanner_demo;
import java.util.Scanner;
public class BMI {
public static void main(String[] args) {
//1.创建Scanner对象
Scanner sc = new Scanner(System.in);
//2.提示输入身高
System.out.println("请输入您的身高!");
//3.获取到用户的身高
double height = sc.nextDouble();
//4.提示用户输入体重
System.out.println("请输入您的体重!");
//5.获取到用户的体重
double weight = sc.nextDouble();
//6.套入公式进行计算 (BMI)=体重(kg)÷身高^2
double bmi = weight / (height * height);
System.out.println("您的bmi值:"+bmi);
// 18.5 <= bmi < 23 正常
// 23 < bmi < 25 前期肥胖
// 25<=bmi<30 1级肥胖
// 30<=bmi <40 2级肥胖
// 40 <=bmi 3级肥胖
if(18.5 <= bmi && bmi < 23 ){
System.out.println("正常");
}else if(23 <=bmi && bmi < 25){
System.out.println("前期肥胖");
}else if( 25<=bmi && bmi<30 ){
System.out.println("1级肥胖");
}else if( 30<=bmi && bmi <40 ){
System.out.println("2级肥胖");
}else if(bmi>=40){
System.out.println("3级肥胖");
}else {
System.out.println("偏瘦!");
}
}
}
利用遗传因素即利用父母的身高进行预测。计算公式为:
儿子成人时的身高=(父高+母高)× 0.54
女儿成人时的身高=(父高×0.923+母高)÷2
四、循环语句
- for循环
重复性动作可以用循环解决
语法:for(初始表达式;条件表达式;迭代语句){循环体}
解释:
初始表达式,创建一个变量,有初始值 int i=1;
迭代语句,i++ ++i i+=2;
循环体,可以写输出语句,其他。。。
理解:初始表达式执行,条件表达式执行,如果不成立,循环结束!
初始表达式执行,条件表达式执行,如果成立,执行循环体,执行迭代语句,再执行条件表达式,成立,继续执行循环体,迭代语句,执行条件表达式。。。条件表达式不成立,理解结束循环!
初始表达式是为循环体服务,那么初始表达式作用域就是循环体
案例:输出10次“HelloWorld”!
package cn.E_106.JavaSe.day05.for_demo;
public class Demo02 {
public static void main(String[] args) {//方法体
for(int i=1;i<=10;i++){//循环体
System.out.println("HelloWorld!");
System.out.println(i);
}
System.out.println("-------------");
for(int i=1;i<=100;i++){
System.out.print(i+"\t");
}
}
}
循环的问题:
1.死循环问题
永远不会停止的循环
package cn.E_106.JavaSe.day05.for_demo;
public class Demo03 {
public static void main(String[] args) {
//1. 条件写错造成死循环!
// for(int i=1;i<=10;i--){
// System.out.println("hello!");
// }
//没有意义的一句话
// System.out.println("执行吗?");
//2.条件直接是true,前后内容可以写可以不写
// for(int i=1;true;i++){
// System.out.println(i);
// }
// System.out.println("");
//3.什么都不写的死循环
for(;;){
System.out.println("hello!");
}
}
}
2.初始表达式(变量)为循环体服务,作用域循环体
扩大初始表达式的作用域到main方法体中!
int i=1;for(i;i<=5;i++){ }----错误的!
int i; for(i=1;i<=5;i++){}----正确的!
public class Demo04 {
public static void main(String[] args) {
int i;//声明在外
for(i=1;i<=5;i++){
System.out.println(i);
}
System.out.println("i最终值:"+i);
}
}
3.迭代语句可以写在循环体
package cn.E_106.JavaSe.day05.for_demo;
public class Demo05 {
public static void main(String[] args) {
for(int i=1;i<=5;){
System.out.println(i++);
}
}
}
4.大括号可以省略
package cn.E_106.JavaSe.day05.for_demo;
public class Demo05 {
public static void main(String[] args) {
for(int i=1;i<=5;)
System.out.println(i++);
}
}
5.多个初始表达式,多个迭代语句
package cn.E_106.JavaSe.day05.for_demo;
public class Demo06 {
public static void main(String[] args) {
for(int i=1,j=10;i<j;i++,j--){
System.out.println(i+"\t"+j);
}
}
}
图例:
1.求1到100的和?
2.求5的阶乘?
3.Scanner结合Switch语句 --- 英雄联盟
小金
四个季节:
A 蜜桃四季春
B 夏日芋泥波波
C 秋天第一杯
D 冬日来杯卡布奇诺!
在控制台输入 A ---提示 :小金正在点 蜜桃四季春!
4.控制台登录功能
预先设计一个用户名和密码
让用户在控制台输入手机号(整数)
让用户在控制台输入密码(整数)
如果用户名或者密码有一个错误,那么提示用户,用户名或者密码错误!
如果都正确,提示用户登录成功!