Java 程序流程控制 (下)

此篇单独对循环结构的知识点进行整理:

之前讲到循环结构分为:for循环,while循环,do...while循环三种最基本的循环结构;在JDK1.5以后的版本还提供了foreach循环,用于进行数组和集合的遍历。

循环语句的四个组成部分:

  • 初始化部分
  • 循环条件部分
  • 循环体部分
  • 迭代部分

for循环:

for(初始化条件; 循环条件; 迭代部分){

  循环体

}

 public class TestFor {
public static void main(String[] args) {
//基础for循环,讲一个语句打印多次
for(int i=0; i<7; i++){
System.out.println("Hello World!! 第"+i+"次打印");
}
}
}

  练习:打印1-100中的所有偶数

 public class TestFor {
public void PrintNum(){
for(int i=1; i<=100; i++){
if(i%2==0){//对2取余,若为0则证明是偶数,执行打印语句,反之则继续循环直到满足偶数条件或者i>0
System.out.println("i="+i);
}
}
}
public static void main(String[] args) {
TestFor testFor = new TestFor();
testFor.PrintNum();
}
}

练习:编写代码满足从1循环到150并在每一行打印一个值,另外需要在每个3的倍数的行打印“foo”,在每个5的倍数的行打印“biz”,

在每个7的倍数行上打印输出“baz”

 public class TestFor {
public void FooBizBaz(){
for(int i=1; i<=150; i++){
System.out.print(i+":");
if(i%3 == 0){
System.out.print(" foo");
}
if(i%5 == 0){
System.out.print(" biz");
}
if(i%7 == 0){
System.out.print(" baz");
}
System.out.println();
}
}
public static void main(String[] args) {
TestFor testFor = new TestFor();
testFor.FooBizBaz();
}
}

注:一定要注意,这个题里不能使用else if(){},一旦使用,会无法在同时满足3、5、7的倍数的行数中同时打印三个字段,因为一旦有一个满足判断条件就不会执行下方的if判断语句从而直接跳出当前循环执行下一次循环。

还有很多小的基础的for循环算法,如打印1-100所有奇数的和、打印出所有的水仙花数(水仙花数可以自己搜索一下),这些题可以自行练习,有助于加强对for循环的理解,这里就不一一赘述了。

while 循环:

  初始化条件

while(循环条件){

  循环体

  迭代条件

}

示例:输出1-100以内的所有偶数

 public class TestWhile {
public void evenNum(){
int i = 1; //初始化条件
while(i<=100 ){//循环条件 if(i % 2 == 0){
System.out.println("i="+i);
}//循环体 i++;//迭代条件
}
} public static void main(String[] args) {
TestWhile testWhile = new TestWhile();
testWhile.evenNum();
}
}

注:for循环和while循环是能够实现互相转化的,因为二者拥有同样的四部分,只是四部分放置的位置不同。

while循环的另一种循环方式:

do...while 循环:

初始化条件

do{

  循环体

  迭代条件

}while(循环条件);

由上述结构可以看出,do...while循环是先进行一次循环在来判断是否满足循环条件,满足则进行下一次循环,不满足则停止循环。

示例:打印1-100中的所有偶数

 public class TestDoWhile {
public void evenNum(){
int i = 1;
do{
if(i % 2 == 0){
System.out.println("i="+i);
}
i++;
}while(i <= 100);
}
public static void main(String[] args) {
TestDoWhile testDoWhile = new TestDoWhile();
testDoWhile.evenNum();
}
}

do...while和while循环的区别:

do...while循环中 初始化条件即使不满足循环条件也会直接执行一次循环体再进行循环条件判断,所以循环体至少被执行一次,而while循环是必须满足循环条件才会执行循环体。

嵌套循环

  顾名思义,嵌套循环就是再一个循环中还能再声明一个循环

  几种嵌套方式:

  1.for循环中能够嵌套一个for或多个for;

2.while循环中可以嵌套一个或多个while循环;

3.for循环中可以嵌套一个或多个while循环;

4.while循环中可以嵌套一个或多个for循环;

5.for循环中可以嵌套一个或多个for/while循环;

6.while循环中可以嵌套一个或多个for/while循环。

示例:

For之间嵌套

 public class TestForFor {
/*打印出 *****
* *****
* *****
* *****
* */
public void forQianTao(){
for(int i = 1; i <= 4;i++){
for(int j = 1; j<=5 ;j++){
System.out.print("*");
}
System.out.println();
}//此为两层循环,i用于控制打印的行数,j用于控制打印的列数
}
public static void main(String[] args) {
TestForFor testForFor = new TestForFor();
testForFor.forQianTao();
} }

其它几种嵌套循环可以参考上面的示例,结构类似。自己可以进行练习,如通过嵌套循环打印九九乘法表、或者打印一个由星号组成的菱形图案,每个星号之间要有一个空格,这些题可以加强对嵌套循环的理解。

Java 基础 程序流程控制 (下)的更多相关文章

  1. Java基础-程序流程控制第二弹(循环结构)

    Java基础-程序流程控制第二弹(循环结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 流程控制有三种基本结构:顺序结构,选择结构和循环结构.一个脚本就是顺序结构执行的,选择结 ...

  2. Java基础-程序流程控制第一弹(分支结构/选择结构)

    Java基础-程序流程控制第一弹(分支结构/选择结构) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.if语句 1>.if语句的第一种格式 if(条件表达式){ 语句体: ...

  3. Java 基础 程序流程控制 (上)

    Java程序流程控制 (上) Java程序大体分为三种流程控制结构:顺序结构.分支结构.循环结构 顺序结构 程序由上到下的逐行执行,中间没有任何跳转和判断语句. 示例代码如下: public clas ...

  4. Java基础总结--流程控制

    Java流程控制* 顺序结构--最常见的执行情况,语句按照出现的先后次序依次执行.* 判断结构--对条件进行判断,执行相应的语句.有三种常见的形式< if(判断条件){语句;}--为真执行语句, ...

  5. Java基础之流程控制

    一.顺序结构 顺序结构的程序语句只能被执行一次.如果您想要同样的操作执行多次,,就需要使用循环结构. if-else-if 语句 语法: if(条件){ 当条件为true时,执行大括号内的代码 }el ...

  6. Java基础-6流程控制

    一).选择控制: 选择控制分为两种:if...else...和switch 单分支结构:这是最简单的一种选择结构,它只是简单的判断某个条件是否成立,如果成立就执行一段代码,语句形式为: if(条件表达 ...

  7. java之程序流程控制

    顺序结构:代码由上至下依次执行: 分支结构: if () { } else{ } if () { } else if () { } else { } switch(常量){ case 常量: 语句; ...

  8. Java程序流程控制之if-else if-else

    java基础之流程控制(一)    流程控制 Flow Control :       流程控制语句是编程语言中的核心之一.可以分为 分支语句.循环语句和跳转语句.        本讲内容包括分支语句 ...

  9. 3、Java基础语法(下):程序流程控制

    程序流程控制 从键盘获取不同类型的变量: 使用Scanner类,具体实现步骤: 1.导包:import java.util.Scanner; 2.Scanner的实例化:Scanner scan = ...

随机推荐

  1. innobackup全备与恢复

    前提:xtrabackup.mysql安装完成,建立测试库reading.测试表test,并插入三条数据. 1.全备:      innobackupex --user=root --password ...

  2. Viewpager结合fragment实现底部导航

    具体实现如下: FindFragment.java package fbtt.com.fbtt.fragment; import android.os.Bundle; import android.s ...

  3. poj3159 Candies SPFA

    题目链接:http://poj.org/problem?id=3159 题目很容易理解 就是简单的SPFA算法应用 刚开始用STL里的队列超时了,自己写了个栈,果断过,看来有时候栈还是快啊.... 代 ...

  4. 使用函数指针调用C++虚函数

    基本概念: 1. 函数指针,一个地址指针变量,其值指向代码区的某个函数首地址. 2. 虚函数,可以被子类覆写的C++成员函数.由虚函数表实现. 3. 虚函数表指针(vpt),指向虚函数表首地址的指针, ...

  5. CI 经常失败?可能是这 5 大原因…

    本文翻译自文章 Top 5 Reasons for CI Failure,主要介绍了 CI 失败的五个原因,包括 CI 服务的错误选择.CI 工程师的不专业性.随意更改CI服务器配置.CI服务器性能差 ...

  6. 使用 CKEditor 上传图片, 粘贴屏幕截图

    之前写过wangEditor,那真是好用,文档也清晰,半天就搞定了,无奈没有对应license,只好选择别的. 外语一般,阅读理解都靠蒙.CKEditor官方文档看的我云里雾里,国内的博客比较少,经过 ...

  7. spring-线程池(2)

    继承:http://www.cnblogs.com/crazylqy/p/4220743.html spring设置容器启动时运行线程类(可循环执行) 修改以下两文件, 1.spring设置容器启动时 ...

  8. [原创]nagios搭建配置

    nagios搭建配置 一.环境 ubuntu 14.04系统 host1:172.17.0.2 serverhost2:172.17.0.3 client 二.安装 1.在两个主机上都执行一下命令: ...

  9. Hadoop之WordCount详解

    花了好长时间查找资料理解.学习.总结 这应该是一篇比较全面的MapReduce之WordCount文章了 耐心看下去 1,创建本地文件 在hadoop-2.6.0文件夹下创建一个文件夹data,在其中 ...

  10. poj2104(划分树模板)

    poj2104 题意 给出一个序列,每次查询一个区间,要求告诉这个区间排序后的第k个数. 分析 划分树模板,O(mlogn). 建树.根据排序之后的数组,对于一个区间,找到中点的数,将整个区间分为左右 ...