【全国Java语言计算机二级等级考试】Java学习笔记3(语句)

3.2语句概述

Java里的语句可以分为以下6类。
1.方法调用语句,如:
System.out.println(“Hello”);
2.表达式语句,即表达式尾加上分号。如:
x=23;
3.复合语句,可以用{}把一些语句括起来构成复合语句,例如:
{z=123+x;
System.out.println(“Hello”);
4.一个分号也是一条语句,称作空语句。
5.控制语句,控制语句分为分支语句,开关语句和循环语句。将在后面3.3~3.5讲解
6.package语句和import 语句与类、对象有关,将在Java学习笔记4中讲解。

3.3 if条件分支语句

3.3.1 if语句

if语句是单条件单分支语句,即根据一个条件来控制程序执行的流程。
if语句的语法格式:
if(表达式){
若干语句
}
需要注意的是,在if条件语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,但为了增强程序的可读性最好不要省略(这是一个很好的编程风格)
在下面的例子2中,将变量a、b、c的数值按大小顺序进行互换(从小到大排列)
例子2:
Example3_2.java
package example3_2;

public class Example3_2 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int a = 9,b = 5,c = 7, t = 0;
	if(b<a) {
		t=a;
		a=b;
		b=t;
	}
	if(c<a) {
		t=c;
		c=a;
		a=t;
	}
	if(c<b) {
		t=c;
		c=b;
		b=t;
	}
	System.out.println("a="+a+",b="+b+",c="+c);
}

}

3.3.2 if-else语句

if-else语句是单条件多分支语句,即根据一个条件来控制程序执行的流程。
if-else语句的语法格式:
if(表达式){
若干语句
}
else{
若干语句
}
例如下面便是有语法错误的if-else语句。
if(x>0)
y=10;
z=20;
else
y=-100;
正确的写法应该是:
if(x>0)
{y=10;
z=20;
}
else
y=-100;
需要注意的是,在if-else语句中,其中的复合语句中如果只有一条语句,{}可以省略不写,单未来增强程序的可读性最好不要省略(这是一个很好的编程风格)。
例子3中有两条if-else语句,其作用是根据成绩输出相应的信息,运行效果如图所示:
在这里插入图片描述
Example 3_3.java
package example3_3;

public class Example3_3 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int math = 65,english = 85;
	if(math>60) {
		System.out.println("数学及格了");
	}
	else {
		System.out.println("数学不及格");
	}
	if(english>90){
		System.out.println("英语是优");
	}
	else {
		System.out.println("英语不是优");
	}
	System.out.println("我在学习if-else语句");
}

}

3.3.3 if - else if - else语句

if - else if - else语句是多条件分支语句,即根据多个条件来控制程序执行的流程。
if - else if - else语句的语法格式:
if(表达式){
若干语句
}
else if(表达式){
若干语句
}

else{
若干语句
}
注意,if - else if - else语句中的else部分是可选项,如果没有else部分,当所有表达式的值都为false时,结束当前if - else if - else的执行(该语句什么都不做)。
另括号可省略同上。这里不再赘述。

3.4 switch开关语句

switch 语句是单条件多分支的开关语句,它的一般格式如下(其中break语句是可选的)。
格式如下:
switch(表达式)
{case 常量1:
若干个语句
break;
case 常量2:
若干个语句
break;

case 常量n:
若干个语句
break;
default:
若干语句
}
下面的例子4使用了switch语句判断用户从键盘输入的正整数是否为中奖号码。
例子4:
Example 3_4.java
package example3_4;

import java.util.Scanner;

public class Example3_4 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int number = 0;
	System.out.println("输入正整数(回车确定)");
	Scanner reader = new Scanner(System.in);
	number = reader.nextInt();
	switch(number) {
	case 9:
	case 131:
	case 12:
		System.out.println(number+"是三等奖");
		break;
	case 209:
	case 596:
	case 27:
		System.out.println(number+"是二等奖");
		break;
	case 875:
	case 316:
	case 59:
		System.out.println(number+"是一等奖");
		break;
	default:
		System.out.println(number+"未中奖");
	}
}

}
需要强调的是,switch表达式中的值可以是byte,short,int, char型,单不可以是long型数据。如果将例子4中的
int number = 0;
更改为
long number = 0;
将导致编译错误。

3.5 循环语句

3.5.1 for循环语句

for语句的语法格式:
for(表达式1;表达式2;表达式3){
若干语句
}
下面的例子5计算8+88+888+8888+…的前12项和。
例子5
Example3_5.java
package example3_5;

public class Example3_5 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	long sum = 0,a = 8,item = a, n = 12,i = 1;
	for(i=1;i<=n;i++) {
		sum=sum+item;
		item=item*10+8;
	}
	System.out.println(sum);
}

}

3.5.2 while循环语句

while语句的语法表达式:
while(表达式){
若干语句
}

3.5.3 do-while循环语句

do-while 循环语法格式如下:
do{
若干语句
}while(表达式);
do-while循环和while循环的区别是do-while循环体至少被执行一次。
下面的例子6用while语句计算1+1/2!+1/3!+1/4!的前20项和。
例子6
Example3_6.java
package example3_6;

public class Example3_6 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	double sum = 0,item = 1;
	int i = 1,n = 20;
	while(i<=n) {
		sum = sum + item;
		i = i+1;
		item = item*(1.0/i);
	}
	System.out.println("sum="+sum);
}

}

3.6 break和continue语句

break和continue语句是用关键字break或continue加上分号构成的语句,
例如:
break;
在循环体中可以使用break语句和continue语句。在一个循环中,例如循环50次的循环语句中,如果在某次循环中执行了break语句,那么整个循环语句结束。如果在某次循环中执行了continue语句,则本次循环结束,即不再执行本次循环中循环体中continue语句后面的语句,而进入下一次循环。
下面的例子7使用了break和continue语句。
例子7
Example3_7.java
package example3_7;

public class Example3_7 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int sum = 0,i,j;
	for(i=1;i<=10;i++) {
		if(i%2 == 0) {//计算1+3+5+7+9
			continue;
		}
		sum = sum + i;
	}
	System.out.println("sum="+sum);
	for(j=2;j<=100;j++) {//求100以内的素数
		for(i=2;i<=j/2;i++) {
			if(j%i==0)
				break;
		}
	if(i>j/2) {
		System.out.println(""+j+"是素数");
		}
	}
}

}

3.7 for语句与数组

JDK 1.5对for语句的功能给予扩充、增强,以便更好地遍历数组,语法格式如下:
for(声明循环变量:数组的名字):{

}
其中,声明的循环变量类型必须和数组的类型相同。这种形式的for语句类似自然语言中的"for each"语句,可以将这种形式的for语句翻译成"对于循环变量依次取数组的每一个元素的值"。
下面的例子8分别使用for语句的传统方式和改进方式遍历数组。
例子8
Example3_8.java
package example3_8;

public class Example3_8 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	int a[] = {1,2,3,4};
	char b[] = {'a','b','c','d'};
	for(int n=0;n<a.length;n++) {//传统方式
		System.out.println(a[n]);
	}
	for(int n=0;n<b.length;n++) {//传统方式
		System.out.println(b[n]);
	}
	for(int i:a) {//循环变量i依次取数组a的每一个元素的值(改进方式)
		System.out.println(i);
	}
	for(char ch:b) {
		System.out.println(ch);
	}
}

}
需要特别注意的是:for(声明循环变量:数组的名字)中的“声明循环变量”必须是变量声明,不可以使用已经声明过的变量。例如,上述例子8中第三个for语句不可以如下分开写成一条变量声明和一条for语句:
int i = 0;
for(i:a){
System.out.println(i);
}

3.8 应用举例

在2.4节介绍了Scanner类,可以使用该类创建一个对象,
Scanner reader = new Scanner(System.in);
然后reader对象调用下列方法,读取用户在命令行输入的各种基本类型的数据。
nextBoolean(),nextByte(),nextShort(),nextInt(),nextLong(),nexFloat(),nextDouble().
上述方法执行时都会阻塞,等待用户在命令行输入数据回车确认。例如,如果用户在键盘输入一个byte取值范围内的整数89,那么reader对象调用hasNextByte(),hasNextInt(),hasNextLong(),hasNextDouble()返回的值都是true,但是,需要注意的是,如果用户在键盘输入呆小数点的数字,例如12.21那么reader对象调用hasNextDouble返回的值是true,而调用hasNextByte(),hasNextInt()以及hasNextLong()返回的值都是false。
在键盘输入数据时,经常让reader对象先调用hasNextXXX()方法等待用户在键盘输入数据,然后再调用nextXXX()方法获取用户输入的数据。
在下面的例子9中,用户在键盘输入若干个数字,每输入一个数字都需要按回车键确认,最好在键盘输入一个非数字字符串结束整个输入操作过程。程序将计算出这些数的和以及平均值。
效果如图所示:
在这里插入图片描述
例子9
Example3_9
package example3_9;
import java.util.*;
public class Example3_9 {

public static void main(String[] args) {
	// TODO Auto-generated method stub
	Scanner reader = new Scanner(System.in);
	double sum = 0;
	int m = 0;
	while(reader.hasNextDouble()){
	double x = reader.nextDouble();
	m=m+1;
	sum=sum+x;
	}
	System.out.printf("%d的个数的和为%f\n",m,sum);
	System.out.printf("%d的个数的平均值是%f\n",m,sum/m);
}

}

小结

(1)Java语言的控制语句和C很类似

(2)Java提供了遍历数组的循环语句(更加方便简洁,码~)

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值