目录
目录
流程控制
复合语句
在Java语言中,复合语句(Compound Statement)也被称为代码块(Block),它是由一对花括号({})括起来的一组语句。复合语句可以包含多个语句,这些语句按照顺序执行。
复合语句通常用于以下情况:
-
定义方法体:在Java中,方法由方法签名和方法体组成。方法体就是一个复合语句,它包含了方法的实际执行逻辑。
public void doSomething() { // 方法体开始 // 这里可以包含多个语句 int x = 10; System.out.println("Hello, world!"); // 方法体结束 }
-
控制结构:控制结构(如if语句、for循环、while循环等)通常需要执行多个语句,此时可以使用复合语句来包含这些语句。
if (x > 0) { // 复合语句开始 System.out.println("x is positive"); x--; System.out.println("Decremented x"); // 复合语句结束 }
3.局部变量作用域:在复合语句内部声明的变量具有局部作用域,只能在复合语句内部访问
public void doSomething() {
// 复合语句开始
int x = 10;
System.out.println(x); // 可以访问x
// 复合语句结束
System.out.println(x); // 编译错误,无法访问x
}
复合语句的作用是组织和控制程序的执行流程,使代码更加清晰、结构化。
条件语句
【If语句】
if条件语句是一个重要的编程语句,用于告诉程序在某个条件成立的情况下执行某段语句,而在另一种情况下另外的语句。
【if的用法】
1.语法一
if(布尔表达式){
语句序列
}
2.语法二
if(布尔表达式)
语句;
3.语法三
if(布尔表达式){
语句序列1;
}else{
语句序列2;
}
4.语法四
if(表达式1){
语句序列1;
}else if(表达式2){
语句序列2;
}else if(表达式3){
语句序列3;
}
...
else if(表达式m){
语句序列m;
}
【switch】语句
[语法]:
swith(表达式){
case 常量值1:语句块1;break;
case 常量值2:语句块2;break;
case 常量值3:语句块3;break;
case 常量值4:语句块4;break;
...........................
case 常量值n:语句块n;break;
default:语句块n+1;break;
循环语句
【while语句】
【语法】:先判断在执行语句。
while(条件表达式){
语句序列
}
计算1-100的和;
public class text1 {
public static void main(String[] args) {
int sum=0,i=0;
while(i<=100) {
sum=sum+i;
i++;
}
System.out.println(sum);
}
}
【do...while语句】
【语法】:先执行再判断。
do{
语句序列
}while(条件表达式)
创建密码:
import java.util.Scanner;
public class text1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String a1;
String a2;
do {
System.out.println("请输入要创建的密码:");
a1=sc.nextLine();
System.out.println("请再次确认密码:");
a2=sc.nextLine();
if(!a1.equals(a2));
System.out.println("输入的密码不一致,请再次输入");
}while(!a1.equals(a2));
System.out.println("密码创建成功!");
}
}
【for循环语句】
【语法】
for(表达式1:表达式2:表达式3){
语句序列
}
foreach语句:
语法:
for(元素类型x;遍历对象obj){
引用了x的java语句;
}
实列:
public class text1 {
public static void main(String[] args) {
int a[]= {1,2,6,5,8};
for(int x:a) {
System.out.println(x);
}
}
}
循环控制
【break语句】
break的作用:中断循环。
break使用场景:
循环嵌套情况下,break语句将只会使程序流程跳出包含它的最内层的循环结构,即只跳出一层循环。
如果想让break跳出外层循环,Java提供了“标签”的功能,语法如下:
标签名:循环体{
break标签名;
}
无标签效果:
可以看出这个break只是跳出了内层循环。
加标签效果:
这个break是跳出了整个循环体。
【continue语句】
continue语句是针对break语句的补充。continue不是立即跳出循环体,而是跳过本次循环,回到
循环的条件测试部分,重新开始执行循环。在for循环语句中遇到continue后,首先执行循环的增量部分,然后进行条件测试。在while和do..while循环中,continue语句使控制直接回到条件测试部分。
continue使用场景:
continue的作用:执行下一次循环。
continue的标签功能,语法:
标签名:循环体{
continue 标签名;
}
【 实践与练习】
【训练一】划分成绩等级
将一、二年级学生的学生成绩划分等级,等级划分标准如下:
“优秀”,大于等于90分。
“良好”,大于等于80分,小于90分。
“合格”,大于等于60分,小于80分。
“不合格”,小于60分。
使用if...else if语句判断成绩等级并输出与该成绩对应的等级。
import java.util.Scanner;
public class text1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int score;
System.out.println("请输入学生的成绩:");
score=sc.nextInt();
if(score>=90) {
System.out.println("该成绩等级为:优秀");
}else if(score>=80 && score<90){
System.out.println("该成绩等级为:良好");
}else if(score>=60 && score<80) {
System.out.println("该成绩等级为:合格");
}else if(score<60) {
System.out.println("该成绩等级为:不及格");
}
}
}
【训练二】判断月份对应的季节
使用switch多分支语句判断某个月份属于哪个季节。
import java.util.Scanner;
public class text {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int month;
System.out.println("请输入月份:");
month=sc.nextInt();
switch(month) {
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;
case 12:
case 1:
case 2:System.out.println("冬季");break;
}
}
}
【训练三】细胞分裂实验
生物实验室做单细胞细菌繁殖实验,每一代细菌数量都会成倍数增长,一代菌落中只有一个细菌,二代菌落中分裂成两个细菌,三代菌落中分裂成4个细菌,以此类推,请计算第十代菌落中的细菌数量。
public class text {
public static void main(String[] args) {
int call =1,time=1;
while(time<10) {
call=call*2;
time++;
}
System.out.println(call);
}
}
【训练四】斐波那契数列
1、1、2、3、5、8、13、21、34、··…是一组典型的斐波那契数列,前两个数相加等于第三个数。那么请问这组数中的第n个数的值是多少?
import java.util.Scanner;
public class text {
public static void main(String[] args) {
double num1=1;
double num2=1;
double n;
Scanner sc=new Scanner(System.in);
System.out.println("请输入要查看第n个数的n值:");
n=sc.nextInt();
for(int i=2;i<n;i++) {
num1=num1+num2;
double temp=num1;
num1=num2;
num2=temp;
}
System.out.println("第"+n+"个数的值为:"+num2);
}
}
【训练五】蜗牛爬井
有一口井,深10米,一只蜗牛从井底向井口爬,白天向上爬2米,晚上向下滑1米,问多少天可以爬到井口?
public class text {
public static void main(String[] args) {
int depth=0,day=0;
while(true) {
depth=depth+2;
if(depth>=10) {
break;
}
depth=depth-1;
day++;
}
System.out.println("蜗牛第"+day+"天爬到进口慢死了");
}
}
【训练六】剧院售票
某剧院发售演出门票,演播厅观众席有4行,每行有10个座位。为了不影响观众视角,在发售门票时,屏蔽掉最左一列和最右一列的座位。请编写程序,结合本节知识点模拟整个售票过程。
public class text1 {
public static void main(String[] args) {
System.out.println("剧场可坐信息如下:");
for(int i=1;i<=4;i++) {
for(int j=1;j<=10;j++) {
if(j==1 ||j==10) {
continue;
}
System.out.println("第"+i+"排"+"第"+j+"列"+"可售");
}
}
}
}