块作用域
在深入学习控制流程之前,先了解块作用域
定义
块(即复合语句)是指大括号括起来的若干条java语句;
而块确定了变量的作用域,一个块可以嵌套在另一个块中。
public class text {
public static void main(String[] args)
{
int n;
........
{
int m;
int n; 不能在嵌套的两个块中声明同名的变量,c++可以嵌套同名变量,但Java不行
.........
}
}
}
控制结构分类
-
顺序控制
-
分支控制(if,else,switch)
-
循环控制(for,while,do while , 多重循环)
-
break
-
continue
-
return
分支控制IF语句
单分支结构
if(条件表达式)
{
执行代码块;
}
举例
import java.util.Scanner
public class text {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄");
int age = scanner.nextInt();
if (age > 18)
{
System.out.println("你已成年了");
}
}
}
双分支结构
if(条件表达式)
{
执行代码块1;
}
else(条件表达式) //else代表否则的意思
{
执行代码块2;
}
当条件表达式成立,即执行代码1.否则执行代码2
举例
import java.util.Scanner
public class text {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个年份");
int year = scanner.nextInt();
if((year % 4 == 0 && year % 100 !=0 )|| year % 400 ==0)
{
System.out.println("是闰年");
}
else
{
System.out.println("是闰年");
}
}
--------------------------------------------------------------------
if(year % 4 ==0 && year % 100 !=0)
{
System.out.println("是闰年");
}
else if (year % 400 ==0)
{
System.out.println("是闰年");
}
else
{
System.out.println("不是闰年");
}
多分支结构
if(条件表达式)
{
执行代码块1;
}
else if(条件表达式)
{
执行代码块2;
}
else if(条件表达式)
{
执行代码块3;
}
else
{
执行代码块4; //除了以上的条件外,其他的条件执行这里
}
举例
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的信用分(0-100)");
int grade = scanner.nextInt();
if( grade >=1 && grade <=100)
{
if(grade = 100)
{
System.out.println("信用极好");
}
else if( grade > 80 && grade <= 99 )
{
System.out.println("信用优秀");
}
else if( grade >= 60 && grade <= 80 )
{
System.out.println("信用一般");
}
else
{
System.out.println("信用差");
}
}
else
{
System.out.println("你的输入有误,请重新输入");
}
}
}
嵌套分支
在一个分支结构中又完整的嵌套了另一个完整的分支结构,
里面的分支结构称之为内层;外面的分支结构称之为外层。
建议不超过三层
if {
if(条件表达式)
{
else if(条件表达式) { }
else { }
}
}
举例
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的性别");
System.out.println("请输入你的初赛成绩(0-10.0)");
char gender = scanner.next().charAT(0);//把字符串转换成字符
double score = scanner.nextDoubel();
if(score > 8.0)
{
if(gende == '男')
{
System.out.println("男,"+"成绩是"+score);
}
if(gende == '女')
{
System.out.println("女,"+"成绩是"+score);
}
}
else
{
System.out.println("You out!");
}
}
}
--------------------------------------------------------------
import java.util.Scanner;
public class text {
public static void main(String[] args) {
// 求根据淡旺季的月份和年龄,打印票价
// 设 月份为mounth,年龄为age,价格是price
//将淡旺季设置一组分支if-else,再将年龄段设置一个分支,分别输入各个价格
Scanner scanner= new Scanner(System.in);
System.out.println("请输入当前的月份");
int mounth = scanner.nextInt();
System.out.println("请输入你的年龄");
int age = scanner.nextInt();
if(mounth>=1 && mounth<=12)
{
if(mounth >= 4 && mounth<=10 )
{
if(age >=18 && age <=60 )
{
System.out.println(mounth+"月份为旺季,成人票价为60");
}
else if(age<18)
{
System.out.println(mounth+"月份为旺季,儿童票价");
}
else
{
System.out.println(mounth+"月份为旺季,老人票价优惠为20");
}
}
else
{
if(age >=18 && age <=60 )
{
System.out.println(mounth+"月份为淡季,成人票价为40");
}
else
{
System.out.println(mounth+"月份为淡季,儿童老人票价优惠为20");
}
}
}
else
{
System.out.println("你输入的月份有误");
}
}
}