`
fox_mt
  • 浏览: 22948 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

从零开始学java-(六)for ZCL:java流程控制3-继续,中断,返回

 
阅读更多

      这几天比较忙,把这事儿耽误了,今天赶紧补上,上一篇我们留了三道作业题,别说是两道啊!我会桑心,因为有一道在文章里面,就是利用for循环来打印个99乘法表

直接上代码了

public class Nine {
	public static void main(String[] args) {
		for (int i = 1; i < 10; i++) {
			for (int j = 2; j < 10; j++) {
				if(i == 1 && j == 2){
					System.out.println("1*1 = " + 1 + " ");
				}
				System.out.println(i + "*" + j + " = " + (i * j) + " ");
			}
		}
	}
}

   来看结果



 

由于太长,我没有把全部的都截图出来,就出来这么多;

在分析之前提个小问题,大家回去自己试试,如果没有

if(i == 1 && j == 2){
	System.out.println("1*1 = " + 1 + " ");
}

 这段代码会如何?

如果 j 也从1 开始会如何?

这个就留给大家解决了,我们来稍微分析一下,首先就是打印的时候

System.out.println(i + "*" + j + " = " + (i * j) + " ")

在i * j之前我们先拼出了  i * j = 的字符串,仔细观察下,我们是怎么拼接的,直接用变量 + ""双引号里面的字符,这也是java中string类型数据,也就是字符串数据拼接的基本方法,大家可以自己尝试,这个并不陌生,

其他就没什么可说的,上一篇对于循环嵌套已经做过解释了;

 

来看第二题

利用while循环做100以内的加法,一直了三个变量

看代码

public class SumByWhile {
	public static void main(String[] args) {
		int i = 0;
		int index = 100;
		int sum = 0;
		while(i < index){
			i++;
			sum += i;
		}
		System.out.println("sum = " + sum);
	}
}

 每次执行循环的时候,i ++ ,从0开始,然后是1,2,3,4,5...我们定义了一个sum变量,是相加之和,一开始是0,我们只要把每次i的值加到sum上,sum = sum + i;就是可以了,还记得 i ++的另一种形式么?

i = i + 1;套到这里,那就是sum+ =i;然后直接打印就ok了,来看看结果


怎么样,结果一样么?

 

来看第三题,打印出100以内是3的倍数,但是不是5 和9的倍数的数字

提示上一篇也说了,看一个数是不是另一个数的倍数怎么看?  %这个符号是不是?这个符号是什么意思?

我直接上代码

 

public class while359 {
	public static void main(String[] args) {
		int i = 0;
		int index = 100;
		while(i < index){
			if(i % 3 == 0){
				if(i % 5 !=0 && i % 9 != 0){
					System.out.println("100以内3的倍数,但不是5 和9的倍数 = " + i);
				}
			}
			i++;
		}
	}
}

  循环我们已经知道了,这段代码的核心就是两个if的判断,大家好好研究了

 顺便来个问题,(i % 5 !=0 && i % 9 != 0)这里还可以怎么写?

来看结果



 

ok,习题已经讲完了,有问题可以留言!

 

来看看今天得内容

看标题就知道了,今天得内容是,继续,中断和返回

     在说继续之前,我们来说说中断,这两个概念是相对的,

中断,主要的应用场景就是强行退出循环和分支语句;

使用的方法就是一个单词,break,不过别忘了在单词后面加个分号,这样break;这就是一行代码了

我们来看个例子:

public class WhileBreak {
	public static void main(String[] args) {
		int i = 1;
		while(i <= 10){
			System.out.println("i = " + i);
			i++;
			if( i > 5){
				break;
			}
		}
		
	}
}

 先来猜一猜结果,根据上文说的,break是用来强制退出循环或者分支语句,我们这里是循环,

break在if条件语句里面,也就是说,当if语句满足条件是才会break,那么i > 5的时候就是条件满足了,

就退出循环了,那么5以后的数字还会打印出来么?

来看看结果



 怎么样,和我们猜想差不多吧,到了i =6的时候,发现i是但与5的,进入if条件语句的执行块,这个执行块的代码就是break,直接中断了循环,不会再继续下了;再来看两个变体

public class WhileBreakQueit {
	public static void main(String[] args) {
		int i = 1;
		while(i <= 10){
			i++;
			System.out.println("i = " + i);
			if( i > 5){
				System.out.println("退出!");
				break;
			}
			
		}
	}
}

 这段运行的结果和上一段略有不同,多了一行退出,自己来试试,

来看下面这个对应的例子

ublic class WhileBreakQueit {
	public static void main(String[] args) {
		int i = 1;
		while(i <= 10){
			i++;
			System.out.println("i = " + i);
			if( i > 5){
				break;
			}
			if(i > 5){
				System.out.println("退出");
			}
		}
	}
}

 这个例子我们加了一句话,当i > 5的时候,打印退出,这个例子,大家试验下,看看结果是什么?这个退出两个字能打印出来么?

这个结果我就不截图了,因为答案就是没打印出来。原因呢,因为他的上面有个break;当i > 5的时候,先执行了break,中断了,下面这个条件语句虽然成立,但是没有执行;

由此可以,这个中断是直接中断退出,循环中在中断语句之后的代码不会被执行;

还有一点,我们发现中断语句都是和条件语句一起使用的,因为只有特定的条件我们才希望他中断,否则的话。。就没有循环了,进来直接就中断了!

 

接下来我们说说继续语句

继续语句和中断语句有些类似的地方,他也可以说是一种中断,但又不完全是中断,当我们使用continue的时候推出本次循环,注意是本次,既然他也是一种中断的话,那么中断之后循环体中的代码。。。什么后果我就不说了。

继续语句我们就用continue

来看个例子

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

 

这段代码,是说,当时2的倍数的时候continue,就是跳出本次循环从新开始下次循环,那么我们打出来的是哪些数字呢,掰掰手指头数数,我们来看结果



 当当当。。。奇数,因为每次偶数的时候我们都是continue了,continue的时候直接从头开始,在continue之后的代码,我们都不管了,直接从头再来;这就是继续语句;

他和break有些类似,又有些不同;注意区分

 之前提到过 switch case语句,如果记忆力好的同学应该记得每个case后面都有一个break,已保证执行完当前case之后,就会跳出分支语句;这里就不单独写例子了,大家可以回忆下。

 

接下来我们来说说返回语句;

返回语句就是在执行程序的过程中跳转到另外一个程序,一般返回语句用在子程序或者程序的方法中,注意,我们在使用return的时候可能是希望返回某个值,也可能不希望程序继续执行,所以才return,这就跟continue和break有一些类似,只是return可以不在循环或者分支中使用,来两个例子瞧瞧

 

public class ReturnMethod {
	public static void main(String[] args) {
		ReturnMethod rm = new ReturnMethod();
		rm.setIntValue(4);
		rm.setIntValue(6);
		int returnValue = rm.getIntValue(6);
		System.out.println("returnValue  = " + returnValue );
	}

	public void setIntValue(int index){
		System.out.println("--setIntValue--begin");
		if(index > 5){
			return;
		}
		System.out.println("--setIntValue--end;index = " + index);
	}

	public int getIntValue(int index){
		return index * 10;
	}
}

   这个例子略微复杂,我们一步一步的看,首先new了一个ReturnMethod,为什么要new呢?因为我的main方法是static的,但是我们想在main方法中想调用的setIntValue和getIntValue不是static的,那么我们只能在main方法中构造出来ReturnMethod对象, 然后再使用这个对象的相应的方法,还有一种方式,不用new对象,也可以调用这两个方法,只是要对这两个方法做一些修改,怎么改就是今天得作业了。。。好好考虑下,static这个关键词

 

我们看setIntValue这个方法,传进去一个int型的参数,方法声明上这个void代表没有返回值,再看方法内部,第一句是打印出来这个方法开始了,第二部分是if条件语句,如果index大于5就用我们刚刚学的返回语句return;

最后一句是打印,这个方法结束了

 

第二个方法,方法声明上有个int,代表返回值是int类型的数据,方法中就一句话,return index *10也就是说,返回index的10倍;我们在main方法中接受了这个返回值,并打印了出来,如果我们没有接受这个返回。。也不用多解释了,给你东西你要,那么这个东西你就没有。。

 

在main方法中,我们调用了两次setIntValue方法,给了不同的参数,来猜猜打印出来的结果是什么?

来看结果



 

我们来分析一下,第一次调用setIntValue我们的参数是4,小于,没有执行返回语句,所以第一次的时候打印了开始,结束和index的值;第二次调用的时候,我们给的参数是6,比5大,那么会进入条件语句块,然后执行return,这个时候结束和index的值还会打印出来么?从结果看,没有打出来,原因就是刚才讲到了,返回之后后面的代码不会再执行了;那么不加if行不行呢?你可以动手试试,看看编译器同意不.....

执行了两次setIntValue之后,我们调用了getIntValue并且接受了返回值,打印出来,和我们猜想的应该没有太大的区别,就不多解释了

怎么样,这个return语句还是比较简洁的吧?

 

over,今天就到这里;记得今天有一道作业题哦!!!

 

 

 

 

  • 大小: 70.3 KB
  • 大小: 20.2 KB
  • 大小: 8.7 KB
  • 大小: 8.9 KB
  • 大小: 13.3 KB
  • 大小: 19.5 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics