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. [刷题]算法竞赛入门经典(第2版) 6-4/UVa439 6-5/UVa1600

    比较忙比较累,只贴代码了. 题目:6-4 UVa439 - Knight Moves //UVa439 - Knight Moves //Accepted 0.000s //#define _XIEN ...

  2. [刷题]算法竞赛入门经典 3-7/UVa1368 3-8/UVa202 3-9/UVa10340

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 都是<算法竞赛入门经典(第二版)>的题目,标题上没写(第二版) 题目:算法竞赛入门经典 3-7/UVa13 ...

  3. JAVA的Condition详解

    Condition 将 Object 监视器方法(wait().notify()和notifyAll())分解成截然不同的对象,以便通过将这些对象与任意Lock实现组合使用,为每个对象提供多个等待 s ...

  4. clojure 使用阿里云仓库

    clojure 使用阿里云仓库 学习一门语言,如果没有梯子真的是一件非常痛苦的事情,好在阿里巴巴为我们java程序员提供了maven镜像.近期学习clojure,为了找解决方案在stackoverfl ...

  5. call,apply和bind,其实很简单

    call和apply call和aplly作用完全一样,都是在特定的上下文中调用函数,或者说改变函数内部的this指向:区别仅在于接收参数的方式不同. var dog = { name: " ...

  6. 关于cgi、FastCGI、php-fpm、php-cgi

    搞了好长时间的php了,突然有种想法,想把这些整理在一起,于是查看各种资料,找到一片解释的很不错的文章,分享一下-- 首先,CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式 ...

  7. .Net程序员学用Oracle系列(28):PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...

  8. 使用adb报错;error: unknown host service

    用adb往虚拟机Genymotion上安装apk时报错 报这个错误是因为主机端口5037被占用 接下来就要查看5037被哪个应用程序占用,然后结束该程序,才能使用adb 在cmd输入命令netstat ...

  9. oracle数据库常用的99条查询语句(转载)

    1. select * from emp; 2. select empno, ename, job from emp; 3. select empno 编号, ename 姓名, job 工作 fro ...

  10. .Net程序员学用Oracle系列(30):零碎补充、最后总结(The End)

    1.同义词 2.Flashback 技术 3.连接字符串的写法 4.转义字符 & 特殊运算符 5.文件类型 6.查看参数 & 修改参数 7.AWR 工具 8.学习方法 & 学习 ...