从”JAVA“而终 8:java循环判断语句讲解


有了前面的数组讲解,我们可以在一个数组里面添加很多个元素,也可以把它们挨个的取出来使用,但是怎样实现动态的添加和取出呢?这就要用到循环了,让计算机循环的去存取。另外,这里也讲解一下判断语句。

首先是判断语句,如果你学习过其他的语言,那么这里对你而言就太简单了!一般而言程序的结构可以大致分为以下三种:顺序结构、选择结构、循环结构。它们的实现就是靠判断语句来实现,我们只需要掌握以下四个知识点就可以很好的运用判断语句了:1、if 的三种形式;2、if 的嵌套使用;3、掌握switch 的使用;4、区分switch和if语句。

首先是if的三种使用方式:单分支if语句、双分支if语句、多分支if语句,如下代码所示:

package nice.iftest;

import java.util.Scanner;

public class IfTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入月份:");
		Scanner scanner = new Scanner(System.in);// 获取键盘输入
		int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
		// 单分支
		if (0 > num && num > 12) {
			System.out.println("您输入的月份有误");
		}
		// 双分支
		if (num <= 3) {
			System.out.println("您输入的月份属于:春季");
		} else {
			System.out.println("您输入的月份不属于:春季");
		}
		// 多分支
		if (num > 3 && num <= 6) {

			System.out.println("您输入的月份属于:夏季");
		} else if (num > 6 && num <= 9) {

			System.out.println("您输入的月份属于:秋季");
		} else if (num > 9 && num <= 12) {

			System.out.println("您输入的月份属于:冬季");
		} else {
			System.out.println("您输入的月份属于:春季");

		}
	}
}

再来看if的嵌套使用,所谓嵌套使用就是if判断里面再用if语句,推荐不要使用太多的嵌套。

package nice.iftest;

import java.util.Scanner;

public class IfTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入月份:");
		Scanner scanner = new Scanner(System.in);// 获取键盘输入
		int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
		// 第一个if
		if (num > 0 && num <= 12) {
			System.out.println("您输入的月份符合要求,我们马上为您算出哪个季节");
			// 第二个if套在第一里面的
			if (num >= 1 && num <= 3) {
				System.out.println("春季");
				// 第三个if语句,套在第二个里面的
				if (num == 1) {
					System.out.println("您输入的是春季的第一个月份");
				} else if (num == 2) {
					System.out.println("您输入的是春季的第二个月份");
				} else {
					System.out.println("您输入的是春季的第三个月份");

				}
			}
		} else {
			System.out.println("请重新输入");
		}
	}
}
接下来是switch语句的使用,这里需要说明一下:

switch语句特点:
1.switch语句选择的类型只有四种:byte,short,int,char。(byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是065535 ;char是一个16位二进制的Unicode字符,JAVAchar来表示一个字符 。
2.case之间与default没有顺序。先执行第一个case,没有匹配的case执行default
3.结束switch语句的两种情况:遇到break,执行到switch语句结束
4.如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break或者switch结尾结束。

5.由于在JDK7.0中引入了新特性,所以witch语句可以接收一个String类型的值,String可以作用在switch语句上

工作原理:用小括号中的变量的值依次和case后面的值进行对比,和哪个case后面的值相同了就执行哪个case后面的语句,如果没有相同的则执行default后面的语句。

注意:如果将default语句放在了第一行,则不管语句与case中的value是否匹配,程序都会从default开始执行直到第一个break出现。

import java.util.Scanner; 
public class JudgeMonth { 
  public static void main(String[] arg){ 
    Scanner scan = new Scanner(System.in); 
    System.out.println("请输入月份:"); 
    int month = scan.nextInt(); 
    switch(month){ 
      case 12: 
      case 1: 
      case 2: 
        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语句和switch语句很像,那具体什么时候用switch语句呢?如果判断的具体数据值不多,而且是byte,short,int,char这四种类型,建议使用switch语句。虽然if也可以用,但这种情况用switch效率相对更高一些。



再接着我们再来讲解循环语句,java现目前的循环语句主要分while和for循环、foreach循环以及迭代器循环,下面着重讲解一下:

什么时候使用循环结构呢?当要对某些语句执行很多次时,就使用循环结构。

1.while语句

while语句有两种,一个是while,一个是do while。

while语句格式:

while(条件表达式)

{

   执行语句;

}

while语句:先判断条件,只有条件满足才执行循环体。

do while语句格式:

do{

       执行语句;

    }while(条件表达式);

do while语句:先执行循环体,在判断条件,条件满足在继续执行循环体。

do while语句特点:无论条件是否满足,循环体至少执行一次。

2.for语句

                格式:

                          for(初始化表达式;循环条件表达式;循环后的操作表达式)

                          {

                               执行语句;

                          }

                 示例:

                           for(int x=0;x<10;x++)

                           {

                                 System.out.println(x);

                           }
3.(增强for循环)foreach:

List a = new ArrayList();
		a.add("a");a.add("b");a.add("c");a.add("d");
		for(int i=0;i<a.size();i++){
			System.out.println(a.get(i));
		}
		for(Object i : a){
			String b=(String) i;
			System.out.println("foreach==="+b);
		}迭代器:
迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。迭代器通常被称为“轻量级”对象,因为创建它的代价小。
Java中的Iterator功能比较简单,并且只能单向移动:(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。(2) 使用next()获得序列中的下一个元素。(3) 使用hasNext()检查序列中是否还有元素。Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。
迭代器应用:迭代器用于while循环。

for语句要注意的地方:

1.变量有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。for语句执行完毕,该变量在内存中被释放。也可以定义在for外面,这它就不光只在for语句内有效,一般如果你只是在for语句中能用到这个变量,你就不要把它定义到外面,以便节省内存。
2.for和while可以进行互换。区别在于:如果需要定义变量控制循环次数。用for更合适。因为for循环完毕,变量在内存中释放

循环中需要特别注意的几点:

package nice.iftest;

import java.util.Scanner;

public class IfTest {

	@SuppressWarnings("resource")
	public static void main(String[] args) {
		System.out.println("请输入数字:");
		Scanner scanner = new Scanner(System.in);// 获取键盘输入
		int num = scanner.nextInt();// 将键盘输入的值赋给num这个变量
		//注意控制循环的跳出,直接跳出整个循环,out定义在哪里就跳出哪里的循环
		/*
		out:for (int i = num; i > 0; i--) {
			while (i == 6) {
				System.out.println("等于6了");
				break out;
			}
			
			System.out.println("倒序后为:" + i);
		}*/
		//跳出while语句继续执行for循环的内容,out定义在哪里,就跳到哪个地方开始继续循环
		out:for (int i = num; i > 0; i--) {
			while (i == 6) {
				System.out.println("等于6了");
				continue out;//continue;如果前面去掉“out:”这里这样写,就会进入死循环状态
			}
			System.out.println("倒序后为:" + i);
		}
	}
}
首先注意是“out”的使用,另外    switch与if之间if用到更广泛。if语句是可以嵌套的。语句嵌套形式其实就是语句里还有语句。

循环嵌套:for(){for(){}}。

        无限循环的最简单表现形式:1.for(;;){}  2.while(true){}

         if语句和for语句是比较重点的,要熟练掌握。

         在switch中的break是可以省略的,编译也会成功,但如果省略了就会一直执行到遇到break为止,所以最好不要忘记加break。

break ,continue ,return 的区别及作用?

第一:break语句通常用在循环语句和开关语句中,当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句, 通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
第二:continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
第三: return语句是将函数的值返回主调函数。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值