控制流程语句
- 分支结构
- 循环结构
分支结构
简单的if结构
语法:
if(boolean类型的条件){
如果boolean结果为true执行此处代码
}
举例:
如果年龄大于16年可以找女朋友
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
if(age > 16){
System.out.println("可以找女朋友");
}
如果年龄大于16年可以找女朋友,且性别是男的
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = sc.nextInt();
String sex = sc.next();
if(age > 16 && sex.equals("男")){
System.out.println("可以找女朋友");
}
if...else结构
语法:
if(boolean类型条件){
如果boolean结果为true执行此处代码
}else{
如果boolean结果为false执行此处代码
}
举例:
如果java成绩大于80分,可以奖励一套<葵花宝典>,否则惩罚写代码
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的java成绩");
double score = sc.nextDouble();
if(score >80){
System.out.println("奖励女朋友");
}else{
System.out.println("惩罚写代码");
}
如果会唱跳或者会rap、篮球,可以和cxk交朋友,否则和赵四交朋友
Scanner sc = new Scanner(System.in);
System.out.println("请输入你会唱跳吗?");
boolean boo1 = sc.nextBoolean();
System.out.println("请输入你会rap、篮球吗?");
boolean boo2 = sc.nextBoolean();
if(boo1 == true || boo2 == true){
System.out.println("可以和cxk交朋友");
}else{
System.out.println("可以和赵四交朋友");
}
多重if结构
语法:
if(boolean类型条件1){
满足条件1执行此处代码
}else if(boolean类型条件2){
满足条件2执行此处代码,不满足条件1
}else if(boolean类型条件3){
满足条件3执行此处代码,不满足条件1和2
}else{
不满足以上条件,执行此处代码
}
举例:
如果手头大于10000块买iPhone11
如果手头大于6000块买华为
如果手头大于3000块买小米
如果手头大于1000块买诺基亚
否则好好学习
Scanner sc = new Scanner(System.in);
System.out.println("请输入手头上的金额");
int money = sc.nextInt();
if(money > 10000){
System.out.println("买iPhone11");
}else if(money >6000){
System.out.println("买华为");
}else if(money >3000){
System.out.println("买小米");
}else if(money >1000){
System.out.println("买诺基亚");
}else{
System.out.println("好好学习,挣钱");
}
多重if要注意的问题:要将苛刻的条件往前放
嵌套if结构
语法:
if(boolean类型条件1){
if(boolean类型条件2){
满足条件1的前提下满足条件2,执行此处代码,
}else{
满足条件1的前提下不满足条件2,执行此处代码,
}
}
购物如果满300块可以打折,如果是会员打8折,如果不是会员打九折
Scanner sc = new Scanner(System.in);
System.out.println("请输入购物的金额");
double money = sc.nextDouble();
if(money > 300){
System.out.println("请输入是否是会员");
boolean vip = sc.nextBoolean();
if(vip == true){
money *= 0.8;
}else{
money *= 0.9;
}
}
System.out.println("您本次需要支付"+money);
总结 String类型在比较内容是否相等时候要用equals方法来判断不能用== 基本数据类型做等值判断用== String类型做等值判断用equals 语法: 字符串1.equals(字符串2)
if分支的特殊用法
if语句的大括号可以不写,但是如果不写,这个if只能控制一行代码。(看得懂不要用)
int age = 10;
if(age > 18)
System.out.println("可以上网");
举例
判断今年是否是闰年(能被4整除且不能被100整除,或者能被400整除)
如果成绩大于90分优秀,80分良,70分中等,60分,否则留级
如果赛跑成绩小于15,可以进入决赛,男的进入男子组,女的进入女子组
代码实现
/**
1:判断今年是否是闰年(能被4整除且不能被100整除,或者能被400整除)
2:如果成绩大于90分优秀,80分良,70分中等,60分,否则留级
3:如果赛跑成绩小于15,可以进入决赛,男的进入男子组,女的进入女子组
*/
import java.util.Scanner;
public class Test1{
public static void main(String[] args){
/*
Scanner sc = new Scanner(System.in);
System.out.println("请输入年份");
int year = sc.nextInt();
if(year %400 ==0 || (year % 4==0 && year % 100 !=0) ){
System.out.println("闰年");
}else{
System.out.println("平年");
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
int score = sc.nextInt();
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("好好学习");
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入成绩");
int score = sc.nextInt();
if(score < 15){
System.out.println("请输入性别");
String sex = sc.next();
if(sex.equals("男")){
System.out.println("进入男子组");
}else{
System.out.println("进入女子组");
}
}else{
System.out.println("很遗憾,淘汰");
}
*/
}
}
switch....case结构
switch(具体的值){
case 值1:
具体的值 与值1 相等的时候,执行此处代码
break;
case 值2:
具体的值 与值2 相等的时候,执行此处代码
break;
case 值3:
具体的值 与值3 相等的时候,执行此处代码
break;
case 值4:
具体的值 与值4 相等的时候,执行此处代码
break;
default :
与所有的case都不匹配的时候,执行此处代码
break;
}
具体的值:byte、short、char、int、枚举,在jdk1.7之后可以使用String类型
case中的值不能相等
举例:
如果选择1就执行登录操作
如果选择2就执行注册操作
如果选择3就执行查看操作
如果选择4就执行退出操作
如果选择其他就提示输入有误
Scanner sc = new Scanner(System.in);
System.out.println("欢迎进入cxk人事管理系统");
System.out.println("1、登录");
System.out.println("2、注册");
System.out.println("3、查询");
System.out.println("4、退出");
int num = sc.nextInt();
switch(num){
case 1:
System.out.println("进入登录功能(待开发)");
break;
case 2:
System.out.println("进入注册功能(待开发)");
break;
case 3:
System.out.println("进入查询功能(待开发)");
break;
case 4:
System.out.println("进入退出功能(待开发)");
break;
default :
System.out.println("输入有误");
break;
}
switch语句总结
- switch语句一般都是用做等值判断
- switch语句能用的类型byte、short、int、char、String、枚举
- switch语句中不加break的时候的
举例
如果选择"春天" 输出345月份
如果选择"夏天" 输出678月份
如果选择"秋天" 输出9、10、11月份
如果选择"冬天" 输出12、1、2月份
如果选择其他就提示输入有误
判断学生成绩是优秀还是其的, 使用switch case实现
代码实现
/**
如果选择"春天" 输出345月份
如果选择"夏天" 输出678月份
如果选择"秋天" 输出9、10、11月份
如果选择"冬天" 输出12、1、2月份
如果选择其他就提示输入有误
判断学生成绩是优秀还是其的, 使用switch case实现
98 97 90 99 优秀
88 81 80 82 良好
*/
import java.util.Scanner;
public class Test2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入分数");
int score = sc.nextInt();
switch(score/10){
case 10:
case 9:
System.out.println("陈独秀");
break;
case 8:
System.out.println("良好");
break;
case 7:
System.out.println("中等");
break;
case 6:
System.out.println("及格");
break;
default:
System.out.println("留级");
break;
}
/*
Scanner sc = new Scanner(System.in);
System.out.println("请输入季节");
String jijie = sc.next();
switch(jijie){
case "春天":
System.out.println("3、4、5月份");
break;
case "夏天":
System.out.println("6、7、8月份");
break;
case "秋天":
System.out.println("9、10、11月份");
break;
case "冬天":
System.out.println("12、1、2月份");
break;
default :
System.out.println("你输入的季节有误");
break;
}
*/
}
}
循环语句
- for循环
- while循环
- do..while循环
for循环
语法:
for(循环的初始化;循环的结束条件;循环的更新){
循环体
}
举例:输出一百遍 "我喜欢java"
for(int i=1; i <=100 ;i++){
System.out.println("我喜欢java"+i);
}
while循环
语法:
while(循环结束条件){
}
举例:计算1~100的和
int i = 1;
int sum = 0;
while(i <= 100){
sum = sum + i;
i++;
}
System.out.println("总和为:"+sum);
练习代码
/*
从键盘上输入任意一个整数,输出这个整数是几位数
思路:每次除以10,直到为0,循环的次数就是这个数的位数
1234
123
12
1
0
*/
import java.util.Scanner;
public class Test1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个任意整数");
int num = sc.nextInt();
//定义一个变量来保存输入的值
int temp = num;
if(num == 0){
System.out.println("0是一个1位数");
}else{
//定义一个变量用来保存循环的次数
int count = 0;
while(num != 0){
num = num /10;
count++;
}
System.out.println(temp+"是一个"+count+"位数");
}
}
}
/*
从键盘上输入任意一个整数,输出这个数的每一位上的数字
思路: 每次对10取余得到个位数,然后除以10再对10取余
int a = num % 10;
num = num / 10
int b = num % 10;
num = num / 10
int c = num % 10;
num = num / 10
int d = num % 10;
num = num / 10
*/
import java.util.Scanner;
public class Test2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个任意整数");
int num = sc.nextInt();
while(num != 0){
int i = num % 10;
System.out.println(i);
num = num /10;
}
}
}
do while循环
语法:
do{
循环体
}while(循环结束条件);
举例:计算1~100的和
int i = 1;
int sum = 0;
do{
sum = sum + i;
i++;
}while(i <= 100);
System.out.println("总和为:"+sum);
区别:
while循环时先判断再执行循环体
do while循环时先执行再判断。 do while循环,至少会执行一次
break、continue关键字
break 结束当前循环
continue 结束本次继续下一次循环
举例:从键盘输入数字,如果输入0就结束,否则继续输入
Scanner sc = new Scanner(System.in);
while(true){
int num = sc.nextInt();
System.out.println("你输入的为:"+num);
if(num == 0){
//结束当前循环
break;
}
}
举例:从键盘输入字符串,如果字符串等于"cnm"获取"wocao",就不输出,否则输出
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请输入......");
String s = sc.next();
/*
if(s.equals("cnm")||s.equals("wocao")){
continue;//结束本次循环继续下次循环
}
*/
if(!s.equals("cnm")&&!s.equals("wocao")){
System.out.println("你在说:"+s);
}
}
嵌套循环
代码演示
*****
*****
*****
*****
*****
for(int j=0;j<5;j++){//外层循环负责行数
for(int i=0;i<5;i++){//内层循环负责次数
System.out.print("*");
}
//换行
System.out.println();
}
*
**
***
****
*****
******
for(int i = 0; i < 6 ;i++){ // 行
for(int j = 0; j <= i ;j++ ){ //列
System.out.print("*");
}
System.out.println();
}
******
*****
****
***
**
*
for(int i = 0; i < 6; i++){
for(int j = 0; j < 6-i ;j++){
System.out.print("*");
}
System.out.println();
}
*
**
***
****
*****
******
for(int i = 0; i < 6; i++){
for(int j=0;j< 6-i-1;j++){
System.out.print(" ");
}
for(int k =0;k <= i ;k++){
System.out.print("*");
}
System.out.println();
}
*******
* *
* *
* *
* *
* *
*******
for(int i = 0; i< 6;i++){ //行
for(int j = 0; j < 6; j++){
if(i == 0 || i == 5 || j == 0 || j == 5){
System.out.print("*");
}else{
System.out.print(" ");
}
}
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
//九九乘法表
for(int i = 1; i <= 9;i++){
for(int j = 1; j <= i; j++){
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}