黑马程序员(Java)----基础语法(三)

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.7 程序流程控制

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。也就是说程序的流程对运行结果有直接的影响。所以,我们必须清楚每条语句的执行流程。而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能。

流程控制语句分类流程控制语句分类:顺序结构、选择结构、循环结构。

1.7.1顺序结构:从上往下,依次执行。

示例:

class ShunXuJieGouDemo {
	public static void main(String[] args) {
		System.out.println("程序开始了");

		System.out.println("Hellow Java");

		System.out.println("程序结束了");
	}
}

程序运行结果:

1.7.1选择结构

1.7.1.1 if语句

格式一:

if(比较表达式) {

语句体;

}

执行流程:先计算比较表达式的值,看其返回值是true还是false。如果是true,就执行语句体;如果是false,就不执行语句体。

示例1:

class IfDemo{
	public static void main(String [] args){
		int x = 10;
		if(x == 10){
			System.out.println("x的值为10");
		}
		System.out.println("Over");
	}
}

运行结果:

注意事项;

1、比较表达式无论简单还是复杂,结果必须是boolean类型

2、if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。

3、一般来说:有左大括号就没有分号,有分号就没有左大括号

格式二:

if ( 条件表达式 )

{

语句体1;

}

else

{

语句体2;

}

执行流程:首先计算比较表达式的值,看其返回值是true还是false。如果是true,就执行语句体1;

如果是false,就执行语句体2;

示例:判断键盘所输入的一个整数是奇数还是偶数

import java.util.Scanner;//导包
class IfTest{
	public static void main(String [] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		//输入想要判断的整数
		System.out.println("输入想要判断的整数:");
		int x = sc.nextInt();
		//判断是奇数还是偶数
		int y = x%2;
		if(y == 0){
			System.out.println("所输入的数是偶数");
		}
		else{
			System.out.println("所输入的数是奇数");
		}
	}
}

运行结果:

if else 语句和三目运算符的联系和区别:

class IfDemo2{
	public static void main(String [] args){
		int x = 10;
		int y ;
		if(x > 10){
			y = 100;
		}
		else{
			y = 200;
		}
		System.out.println("y="+y);
	}
}

运行结果:

用三目运算符实现:

class IfDemo2{
	public static void main(String [] args){
		int x = 10;
		int y = x > 10? 100:200;
		System.out.println("y="+y);
	}
}

运行结果:

结论:当if else运算后,有一个具体的结果时,可以简化写成三元运算符。

格式三:

if(比较表达式1) {

语句体1;

}

else if(比较表达式2) {

语句体2;

}

else if(比较表达式3) {

语句体3;

}

...

else {

语句体n+1;

}

示例:用键盘录入一个成绩,判断并输出成绩的等级。

90-100 优秀

80-90  好

70-80  良

60-70  及格

0-60   不及格

import java.util.Scanner;
class IfDemo3{
	public static void main(String [] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		//录入数据
		System.out.println("请输入你的成绩:");
		int score = sc.nextInt();

		if(score > 90 && score <= 100){
			System.out.println("优秀");
		}
		else if(score > 80 && score <= 90){
			System.out.println("好");
		}
		else if(score > 70 && score <= 80){
			System.out.println("良");
		}
		else if(score >= 60 && score <= 70){
			System.out.println("及格");
		}
		else if(score >= 0 && score < 60){
			System.out.println("不及格");
		}
		else{
			System.out.println("您输入的成绩有误");
		}
	}
}

运行结果:

1.7.1.2 switch语句

格式:

switch(表达式) {

case 值1:

语句体1;

break;

case 值2:

语句体2;

break;

...

default:

语句体n+1;

break;

}

注意:switch语句的表达式的取值时是有限定的,可取的值为:byte,short,int,char,JDK5以后可以是枚举,JDK7以后可以是字符串。

示例1:键盘录入一个数据,根据这个数据,我们输出对应的星期几

键盘录入1,对应输出星期一

键盘录入一个数据,根据这个数据,我们输出对应的星期?

键盘录入1,对应输出星期一

键盘录入2,对应输出星期二

...

键盘录入7,对应输出星期日

import java.util.Scanner;
class SwitchDemo{
	public static void main(String [] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);

		//键盘控制录入数据
		System.out.println("请输入一个数据(1-7)");
		int week = sc.nextInt();

		switch(week){
			case 1:
			System.out.println("星期一");
			break;
			case 2:
			System.out.println("星期二");
			break;
			case 3:
			System.out.println("星期三");
			break;
			case 4:
			System.out.println("星期四");
			break;
			case 5:
			System.out.println("星期五");
			break;
			case 6:
			System.out.println("星期六");
			break;
			case 7:
			System.out.println("星期七");
			break;
			default:
			System.out.println("输入的数据有误");
			break;
		}
	}
}

运行结果:

注意事项:1、case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。

2、default可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。

3、break可以省略,但是结果可能不是我们想要的。会出现一个现象:case穿透。

4、进入switch语句后,执行顺序是先执行case,然后从上到下,最后再执行default。即使default放在case上面,执行顺序也不变。

5、结束switch语句的两种情况:①遇到break,②执行到switch语句结束。

示例2:看程序写结果

class SwitchTest {
	public static void main(String[] args) {
		int x = 2;
		int y = 3;
		switch(x){
			default:
				y++;
				break;
			case 3:
				y++;
			case 4:
				y++;
		}
		System.out.println("y="+y);
		System.out.println("---------------");

		int a = 2;
		int b = 3;
		switch(a){
			default:
				b++;
			case 3:
				b++;
			case 4:
				b++;
		}
		System.out.println("b="+b);
	}
}

分析:第一个switch语句执行时,执行到default语句后,后面有break,所以就退出switch语句,执行输出语句。

第二个switch语句执行时,执行到default语句后,因为没有break,所以继续执行后面的两个case语句而不用判断是否满足条件。

运行结果:

示例3:用switch语句实现键盘录入月份,输出对应的季节

import java.util.Scanner;
class SwitchTest4{
	public static void main(String [] args){
		//创建一个键盘录入对象
		Scanner sc = new Scanner(System.in);
		//输入数据
		System.out.println("请输入月份(1-12)");
		int month = sc.nextInt();

		switch(month){
			case 1:
			case 2:
			case 12:
				System.out.println("冬季");
				break;
			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;
			default:
				System.out.println("你输入的月份有误");
		}
	}
}

程序运行结果:

思考:if和switch语句什么时候用比较合适:

if语句使用前提:1、针对结果是boolean类型的判断

2、针对一个范围的判断

3、针对几个常量值的判断

switch语句使用前提:针对几个常量值的判断

针对几个常量值的判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存,效率相对高。

1.7.3
循环结构

1.7.3.1 for循环

格式:

for(初始化语句;判断条件语句;控制条件语句) {

循环体语句;

}

for里面的三个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复整个过程,直到条件不满足为止。

示例一:使用for循环在控制台输入3句“hellow world”

class ForDemo{
	public static void main(String [] args){
		for(int i = 1;i <= 3;i++ ){
			System.out.println("hellow world");
		}
	}
}

运行结果:

练习1:求出1-10之间数据之和

class ForDemo3{
	public static void main(String [] args){
		int sum = 0;
		for(int i = 1;i <= 10;i++){
			//int sum = 0;
			sum = sum + i;
		}
		System.out.println("sum:"+sum);
	}
}

运行结果:

练习2:求出1-100之间偶数和

class ForDemo4{
	public static void main(String [] args){
		int sum = 0;
		for(int i = 1;i <= 100;i++){
			if(i%2 == 0){
				sum += i;
			}
		}
		System.out.println("sum:"+sum);
	}
}

运行结果:

练习3:在控制台输出所有的”水仙花数”(所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身)。

class ForDemo6{
	public static void main(String [] args){
		int count = 0;
		for(int i = 100;i <= 999;i++){
			int x = i%10;//求出个位数
			int y = i/10%10;//求出十位数
			int z = i/100%10;//求出百位数

			if(i == (x*x*x+y*y*y+z*z*z)){
				System.out.println(i);
				count++;
			}
		}
		System.out.println("所有的水仙花数的个数是:"+count);
	}
}

运行结果:

1.7.3.2 for循环

格式:

初始化语句;

while(判断条件语句) {

循环体语句;

控制条件语句;

}

示例1:

class WhileDemo3{
	public static void main(String [] args){
		//while循环
		int count2 = 0;
		int i = 100;
		while(i <= 999){
			int ge = i%10;
			int shi = i/10%10;
			int bai = i/100%10;

			if(i == (ge*ge*ge + shi*shi*shi + bai*bai*bai)){
				count2++;
			}
			i++;
		}
		System.out.println(count2);
	}
} 

运行结果:

练习:我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。

请问,我折叠多少次,就可以保证厚度不低于珠穆朗玛峰的高度?

class WhileDemo5{
	public static void main(String [] args){
		//定义一个统计变量,初始化值为0;
		int count = 0;
		//最高山峰是珠穆朗玛峰:8848m这是最终的厚度
		//我现在有一张足够大的纸张,厚度为:0.01m这是初始厚度
		double start = 0.01;
		double end = 8848.00;
		while(start < end){
			//只要每次变化的厚度没有超过珠穆朗玛峰的高度,就折叠,统计变量++
			count++;
			//没折叠一次厚度就会变为原来的2倍
			start *= 2;
		}
		System.out.println("要折叠"+count+"次");
	}
}

运行结果:

思考:while循环和for循环的区别?

1、for为了循环而定义的变量在for循环结束就在内存中释放,而while循环使用的变量在循环结束后还可以继续使用。

2、for循环适合针对一个范围判断进行操作,while循环适合判断次数不明确操作

1.7.3.3  do...while 循环

格式:

初始化语句;

do {

循环体语句;

控制条件语句;

}

while(判断条件语句);

示例:

class DoWhileDemo{
	public static void main(String [] args){
		int i = 1;
		do{
			System.out.println("i="+i);
			i++;
		}
		while(i <= 3);
	}
}

运行结果:

循环语句的区别:

do...while循环至少执行一次循环体,而for,while循环必须先判断条件是否成立,然后决定是否执行循环体语句。

注意死循环:

两种最简单的死循环:while(true){...}、for(;;){...}

1.7.3.4 循环嵌套

示例1:请输出下面的4行5列的星星(*)图案。

*****

*****

*****

*****

代码如下:

class ForForDemo{
	public static void main(String [] args){
		for(int x = 1;x <= 4;x++){
			for(int y = 1;y <= 5;y++){
				System.out.print("* ");
			}
			System.out.println();
		}
	}
<span style="font-size:18px;">}</span>

运行结果:

示例2:请输出下列的形状

*

**

***

****

*****

代码如下:

class ForForDemo2{
	public static void main(String [] args){
		for(int x = 1;x <= 5;x++){
			for(int y = 1;y <= x;y++){
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

运行结果:

示例3:在控制台输出九九乘法表。

1x1=1

1x2=2    2x2=4

1x3=3    2x3=6    3x3=9

...

1x9=9    2x9=18    ...    ...        9x9=81

代码如下:

class ForForDemo3{
	public static void main (String [] args){
		for(int i = 1;i <= 9;i++){
			for(int j = 1;j <= i;j++){
				System.out.print(j+"x"+i+"="+i*j+'\t');
			}
			System.out.println();
		}
	}
}

运行结果:

注意:代码中的"\t"是一个转义字符,也就是制表符。还有其他的一些转义字符:\n:回车,\b:退格,\r:回车符

1.7.4 控制跳转语句

1.7.4.1 break(跳出)

应用范围:

1、switch语句中

2、循环语句中

示例:

class BreakDemo{
	public static void main(String [] args){
		for(int x = 0;x < 10;x++){
			if(x==3){
				break;
			}
			System.out.println("x="+x);
		}
	}
}

运行结果:

当x的值为3的时候,跳出循环

1.7.4.2 continue(继续)

应用范围:循环结构。

continue语句是结束本次循环继续下次循环。

示例:

class Continue{
	public static void main(String [] args){
		for(int x = 0;x <= 10;x++){
			if(x==3){
				continue;
			}
			System.out.println("x="+x);
		}
	}
}

运行结果:

当x的值为3时,跳出本次循环,执行下次循环。

注意:这两个语句离开应用范围,存在是没有意义的。

扩展知识:标号的出现,可以使得这两个语句作用于指定范围。

示例1:

class BreakDemo2{
	public static void main(String [] args){
		out:for(int x = 0;x <= 3;x++){
			in:for(int y = 0;y <=4;y++){
				if(y==2){
					break;
				}
				System.out.println("x="+x+",y="+y);
			}
		}
	}
}

运行结果:

示例2:

class ContinueDemo2{
	public static void main(String [] args){
		out:for(int x  = 0;x <= 3;x++){
			in:for(int y = 0;y <= 4;y++){
				if(y==2){
					continue;
				}
				System.out.println("x="+x+",y="+y);
			}
		}
	}
}

运行结果:

练习:小芳的妈妈每天给她2.5元钱,她都会存起来,但是, 每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。

分析:小芳的妈妈每天给她2.5元钱        double dayMoney = 2.5;

她都会存起来        double moneySum = 0;

因为是统计的题,所以必须有一个统计变量,在这里是用于统计天数的        int dayCount = 0;

当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱         
dayCount%5==0时,moneySum -= 6;

经过多少天,可以存到100元        double result = 100;

方法一:使用while循环

class WhileDemo{
<span style="white-space:pre">	</span>public static void main(String [] args){
<span style="white-space:pre">		</span>double dayMoney = 2.5;
<span style="white-space:pre">		</span>double moneySum = 0;
<span style="white-space:pre">		</span>double result = 100;
<span style="white-space:pre">		</span>int dayCount= 0;
<span style="white-space:pre">		</span>while(moneySum < result){
<span style="white-space:pre">			</span>dayCount++;
<span style="white-space:pre">			</span>moneySum += dayMoney;
<span style="white-space:pre">			</span>if(dayCount%5==0){
<span style="white-space:pre">				</span>moneySum -= 6;
<span style="white-space:pre">			</span>}
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>System.out.println(dayCount);
<span style="white-space:pre">	</span>}
}

运行结果:

方法2:使用while死循环

class WhileBreakDemo{
	public static void main(String [] args){
		double dayMoney = 2.5;
		double moneySum = 0;
		int dayCount = 0;
		int result = 100;
		while(true){
			dayCount++;
			moneySum += dayMoney;
			if(moneySum >= result){
				break;
			}
			if(dayCount%5 == 0){
				moneySum -= 6;
			}
		}
		System.out.println("一共用了"+dayCount+"天存了100元");
	}
}

运行结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-10 15:23:43

黑马程序员(Java)----基础语法(三)的相关文章

黑马程序员——Java基础语法(三)---数组

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本篇博文主要的内容是java语法的第三部分--数组,数组同一种类型数据的集合.其实,数组就是一个容器.数组可以自动给数组中的元素从0开始编号,方便操作这些元素. 一.数组的定义 数组的格式一:元素类型[] 数组名 = new 元素类型[元素个数或数组长度];如:int[] arr=new int[5]; 数组定义的格式二:元素类型[]数组名=new元素类型[]{元素,元素,……

黑马程序员——Java基础语法(一) --- 关键字、标识符、注释、常量和变量、运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 本篇博文主要总结java的基础语法,主要的内容包括:关键字.标识符.注释.常量和变量.运算符几部分. 一.关键字 关键字是被Java语言赋予了特殊含义的单词.关键字中所有的字母都是小写. java中的关键字主要包括如下几部分: 1.用于定

黑马程序员——Java基础语法(二)---流程控制

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 本文主要介绍java基础语法中的流程控制,流程控制是我们写出灵活代码的基础.常见的流程控制主要有四类:判断结构.选择结构.循环结构.其他控制结构 一.判断结构 判断结构的标志是if语句,if语句主要有三种表现形式: 1.if(条件表达式) { 执行语句 } 注意: 1.如果if语句中只有一条语句,那么可以不写大括号.不过初学者一定要写括号,以免出错. 2.如果if语句没写大括号,if就只能控制

黑马程序员——Java基础语法(三) 函数

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 函数 1. 定义:Java中,函数也叫方法,是具有特定功能的一段独立小程序. 2.格式 :修饰符 返回值类型 函数名(参数类型 形式参数1,参数类型 形式参数2)  { 执行语句; return 返回值; } 返回值类型:函数运行后的结果的数据类型. 参数类型:形式参数的数据类型. 形式参数:是一个变量,用于存储调用函数时传给函数的实际参数. 实际参数:传递给形式参数的具体值.

黑马程序员---java基础语法---关键字,常量,变量,运算符

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 第一讲:java语言基础 1.关键字的定义和特点 定义:被Java语言赋予了特殊含义的单词 特点:关键字中所有字母都为小写 用于定义数据类型的关键字  class interface byte short int  long  float

黑马程序员——Java基础语法(一)

Java语言的基础组成  1. 关键字 关键字的概念:被Java赋予了特殊涵义的单词. 特点:体现上都是英文小写. Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间. 1. 用于定义数据类型的关键字 基本数据类型(四类八种): 整数类型:byte  short  int  long   浮点类型:float  double 字符类型:char                            布尔型:boolean byte:取值范围-2^

黑马程序员——Java基础语法---流程控制与函数

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------       程序控制流 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } el

黑马程序员---java基础语法--流程控制与函数

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ 一.程序流程控制 也称语句,主要有:判断结构.选择结构和循环结构. 1. 判断结构——if if语句的三种格式: a)  if(条件表达式) { 执行语句: } b)  if(条件表达式) { 执行语句: } else { 执行语句: } c)  if(条件表达式) { 执行语句: } else  if (条件表达式) { 执行语句 } …… else { 执行语句: } if

黑马程序员——Java基础---IO(三)--File类、Properties类、打印流、序列流(合并流)

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作,因此是对流操作的一种补充 3)File类的实例是不可变的:也就是说,一旦创建,

黑马程序员——Java基础语法---数组

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 一.概念         同一种类型数据的集合.简单的来说就是一容器,用来装东西的. 使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 二.一维数组的格式 格式1:元素类型 [ ]数组名 = new 元素类型 [元素