1.语句总分类图
2.非控制语句
非控制语句不能控制程序执行的流程。
共分为
2.1.空语句
一个分号就是一条空语句
例
;
2.2.方法调用语句
在方法后加上一个分号,就是方法调用语句
例
System.out.println();
2.3.方法声明语句
方法头后加分号
例
public static int max(int num1,int num2) ;
2.4.表达式语句
表达式加分号
例
z=z+z+z;
2.5.复合语句
被{}包起来的语句,理解为一条语句
例
{
z=z+z;
System.out.println(z);
}
2.6.包命名语句
给包起名字的语句
例
package java.wang;
2.7.包引用语句
作用是引用包里面的类
例
import java.liu.*;
3.选择语句
3.1. if语句
if语句格式
if(表达式)
{
语句组;
}
表达式值为true时执行语句组
3.2. if----else 语句
格式
if (条件表达式)
{
语句组1
}
else
{
语句组2
}
当if条件表达式为true时执行语句组1,为false时执行语句组2.
3.3.if else if 语句
格式
if (条件表达式1)
{
语句组1
}
else if(条件表达式2)
{
语句组2
}
else if(条件表达式3)
{
语句组3
}
else
{
语句组4
}
当条件表达式1为true时执行语句组1,
当条件表达式1为false,且条件表达式2为true时,执行语句组2,
当条件表达式1和条件表达式2为false,且条件表达式3为true时,执行语句组3.
当条件表达式1、条件表达式2、条件表达式3,均为false时,执行语句组4.
3.4.switch 语句
switch 根据表达式的值来是否与某个常量匹配来进行选择,其中表达式的值只能是字符、数字或字符串
格式
switch(表达式)
{
case 常量1: 语句组1;break;
case 常量2: 语句组2;break;
~~~
case 常量3: 语句组3;break;
{
default: 默认语句组;
}
}
当表达式值为常量1时,执行语句组1,
当表达式值为常量2时,执行语句组2,
当表达式值为常量3时,执行语句组3,
当表达式值为常量n时,执行语句组n,
当表达式值不为任何一个常量时,执行默认语句组。
4.循环语句
4.1.for语句
4.1.1.for语句格式
for(表达式1;表达式2;表达式3)
{
语句组; //循环体
}
表达式1:是一个数值,对变量进行初始化,只执行一次。
表达式2:是一个布尔值,当表达式2为true时,流程进入循环体
表达式3:调整表达式2的值
4.1.1.for语句流程
首先计算表达式1,完成变量初始化,然后测试表达式2的值,若表达式2的值为true,则流程进入循环体执行语句组,执行完语句组,紧接着进表达式3计算,这样第一轮循环就结束了,下一轮从表达式2开始若表达式2依旧为true则再次进入循环体,否则结束整个循环。
4.3.while 语句
4.3.1.while 格式
while(条件表达式)
{
语句组; //循环体
}
4.3.2.while 执行流程
首先计算表达式的值,若其值为true,则流程进入循环体执行语句组,语句组执行完后进入下一轮循环,即再次计算条件表达式的值,若其值为true,将再次执行语句组,否则跳出while语句
4.4.do while 循环表达式
4.4.1.do while 格式
do{
语句组;
}while(条件表达式);
while 和 do while 的区别
while循环可能一次也不执行,do-while 至少会执行一次
5.跳转语句
5.1.break语句
只能在循环体中使用,执行时立即终止循环,跳出循环体
5.2.continue 语句
只能在循环体中使用,执行时,跳过本次循环
5.3.return 语句
返回方法的值
6.课后习题
1.求1!+3!+13!
参考:
public class qiu
{
public static void main(String[] args)
{
long sum=0;
for(int i=1;i<=13;i+=2)
{
int k=i;
for(int j=1;j<i;j++)
{
k*=j;
}
sum+=k;
}
System.out.println("1~13阶乘为:"+sum);
}
}
2.分别用do-while和for循环求1+1/2!+1/3!…前二十项之和。
参考:
public class While
{
public static void main(String[] args)
{
int i=1;
double sum=0;
do{
double k=i;
int j=1;
do{
k*=j;
j++;
}while(j<i);
sum+=k;
i++;
}while(i<=20);
System.out.println("前二十项为:"+sum);
}
}
public class For
{
public static void main(String[] args)
{
double sum=0;
for(int i=1;i<=20;i++)
{
double k=i;
for(int j=1;j<i;j++)
{
k*=j;
}
sum+=k;
}
System.out.println("前二十项为:"+sum);
}
}
3.编写程序对三个整数进行排序,要求三个整数必须键盘输入
import java.util.Scanner;
public class sort
{
public static void main(String[] args)
{
Scanner reader=new Scanner(System.in);
System.out.println("input into");
double num1=reader.nextDouble();
double num2=reader.nextDouble();
double num3=reader.nextDouble();
if(num1>num2)
{
num1+=num2;
num2=num1-num2;
num1=num1-num2;
}
if(num1>num3)
{
num1+=num3;
num3=num1-num3;
num1=num1-num3;
}
if(num2>num3)
{
num2+=num3;
num3=num2-num3;
num2=num2-num3;
}
System.out.println(num1+"<"+num2+"<"+num3);
}
}
4.编写程序,输入个数不确定的整数,并判断输入整数和负数的个数,输入0时结束程序
参考:
import java.util.Scanner;
public class panduan
{
public static void main(String[] args)
{
int num2=0;
int num3=0;
double num;
Scanner reader=new Scanner(System.in);
do{
System.out.println("please into (0 is finish)");
double num1=reader.nextDouble();
if(num1<0)
num3++;
if(num1>0)
num2++;
num=num1;
}while(num!=0);
System.out.println("positive numver:"+num2);
System.out.println("negative numver:"+num3);
}
}
5.编写程序,从键盘输入整数并求他们的总和和平均值,输入0时程序结束。
参考:
import java.util.Scanner;
public class sumandavg
{
public static void main(String[] args)
{
double sum=0;
int count=0;
int num;
Scanner reader=new Scanner(System.in);
do{
System.out.println("please into (0 is finish)");
int num1=reader.nextInt();
sum+=num1;
count++;
num=num1;
}while(num!=0);
System.out.println("sum:"+sum);
System.out.println("avg:"+sum/count);
}
}
6.用while循环求m2大于12000的最小数m.
参考
public class M
{
public static void main(String[] args)
{
int m=1;
while(m*m<=12000)
{
m++;
}
System.out.println("min:"+m);
}
}
7.编写程序输入一个整数,显示它所有的素数因子,如输入120,显示2,2,2,3,5
参考:
import java.util.Scanner;
public class Factor
{
public static void main(String[] args)
{
Scanner reader=new Scanner(System.in);
System.out.println("please into");
int num=reader.nextInt();
while(num>1)
{
for(int i=2;i<=num;i++)
{
if(num%i==0)
{
System.out.print(i+" ");
num/=i;
break;
}
}
}
}
}
8.写一个嵌套for的循环打印下列图案
1
1 2
1 2 3
1 2 3 4
参考:
import java.util.Scanner;
public class Tuan
{
public static void main(String[] args)
{
for(int i=1;i<=4;i++)
{
for(int j=1;j<=i;j++)
{
System.out.print(j+" ");
}
System.out.println();
}
}
}
9.分别用switch和if语句写两个句子,说明它们在应用中的优缺点
参考:略
10.分别用do-while和while语句编写程序,求3*n!
参考:
import java.util.Scanner;
public class Three
{
public static void main(String[] args)
{
Scanner reader=new Scanner(System.in);
System.out.println("please into ");
int n=reader.nextInt();
double sum=3;
int i=1;
while(i<=n)
{
sum*=i;
i++;
}
System.out.println(sum);
}
}
import java.util.Scanner;
public class Three1
{
public static void main(String[] args)
{
Scanner reader=new Scanner(System.in);
System.out.println("please into ");
int n=reader.nextInt();
double sum=3;
int i=1;
do{
sum*=i;
i++;
}while(i<=n);
System.out.println(sum);
}
}
11.写一个例子程序,包含return、break、continue
参考:略
12.假定y为3,以下表达式运算后,y的值什么?表达式的值是多少?
(y>1)&(y++>1)
参考:4 true
13.假定y为8,以下表达式运算后,y的值什么?表达式的值是多少?
(y>1)&&(y++>1)
参考:true 9(一般答8,但我实际操作为9)
14.switch(x)语句中,变量x应该是什么数据类型?如果在执行case语句后没有使用break,那么下一条要执行的语句是什么?可以把switch语句转换成等价的if语句吗?反过来可以吗?使用switch语句的优点是什么?
参考:略
15.使用switch语句重写下列if语句,并画出switch语句的流程图
if(a==1) x+=2;
else if(a==2) x+=3;
else if(a==3) x+=4;
else if(a==4) x+=5;
参考:
// if(a==1) x+=2;
// else if(a==2) x+=3;
// else if(a==3) x+=4;
// else if(a==4) x+=5;
import java.util.Scanner;
public class Switch
{
public static void main(String[] args)
{
int x=1;
int a=3;
switch(a)
{
case 1:x+=2;break;
case 2:x+=3;break;
case 3:x+=4;break;
case 4:x+=5;break;
}
System.out.println(a);
System.out.println(x);
}
}
16.使用条件运算符重写下列if语句
if(count % 8 == 0) System.out.println(count+"\n");
else System.out.println(count+" ");
参考:
count%8==0 ? System.out.println(count+"\n");:System.out.println(count+" ");
17.解释下列代码的输出
int i=2;System.out.println(--i+i+i++);
System.out.println(i+ ++i);
参考
3
5
18.下列语句的执行结果
for(int i = 1;;)System.out.println(i+ ++i);
参考:死循环
19.如果一个变量是在for循环中声明的,退出循环后还能使用该变量吗?
参考:不能