java学习笔记 java编程思想 第4章 控制执行流程
目录
- 4.1 true和false
- 4.2 if-else
- 4.3 迭代
- 4.3.1 do-while
- 4.3.2 for
- 练习1
- 练习2
- 练习3
- 练习4
- 练习5
- 4.3.3 逗号操作符
- 4.4 Foreach语句
- 4.5 rerurn
- '练习6
- 4.6 break和continue
- 练习7
- 4.7 臭名昭著的goto
- 4.8 switch
- 练习8
- 练习9
- 练习10
4.1 true和false
4.2 if-else
4.3 迭代
public class Test01 {public static void main(String[] args) {System.out.println("start work...");while (condition()) {System.out.println("do working...");}System.out.println("end work...");}static boolean condition() {boolean result = Math.random() < 0.99;System.out.println("result = " + result);return result;}
}
4.3.1 do-while
do {statement
}while(Boolean-expression)
4.3.2 for
for (initialization; Boolean-expression; step) {statement
}
练习1
public class Exec01 {public static void main(String[] args) {for(int i = 1; i <= 100; i++ )System.out.println(i);}
}
练习2
import java.util.Random;public class Exec02 {public static void main(String[] args) {Random r = new Random();int before = r.nextInt(100);int current = r.nextInt(100);for (int i = 0; i < 25; i++) {System.out.print("before=" + before + ", current=" + current + ": ");if (before < current) System.out.println("大于");else if (before > current) System.out.println("小于");else System.out.println("等于");before = current;current = r.nextInt(100);}}
}
练习3
import java.util.Random;public class Exec02 {public static void main(String[] args) {Random r = new Random();int before = r.nextInt(100);int current = r.nextInt(100);while ()for (int i = 0; i < 25; i++) {System.out.print("before=" + before + ", current=" + current + ": ");if (before < current) System.out.println("大于");else if (before > current) System.out.println("小于");else System.out.println("等于");before = current;current = r.nextInt(100);}}
}
练习4
public class Exec04 {public static void main(String[] args) {boolean flag = true;for (int i = 2; i <= 100; i++) {for (int j = 2; j < i; j++)if (i % j == 0) {flag = false;break;}if (flag) System.out.println(i);flag = true;;}}
}
练习5
public class Exec05 {public static void main(String[] args) {String result = method1(10, "");System.out.println(result);}public static String method1(int a, String s) {return a > 0 ? method1(a >>> 1, (a & 1) + s) : s;}
}
4.3.3 逗号操作符
注意是逗号操作符,而不是逗号分隔符。
- 逗号分隔符:用来分隔函数的不同参数的。
- 逗号操作符:用在fior循环的控制表达式中。在控制表达式的初始化和步进控制部分。可以使用一个或几个逗号分隔语句,这些语句会独立执行。
public class Test02 {public static void main(String[] args) {for(int i = 1, j = i + 10; i < 5; i++, j = i * 2) {System.out.println("i=" + i + ", j=" + j);}}
}
初始化部分可以定义任意数量的相同类型变量。
4.4 Foreach语句
javase5引入的foreeach语句语法。不用创建int变量,就可以便利数值和容器、
4.5 rerurn
java中表示无条件分支关键词:return
、break
、continue
、goto。
return
的用途
- 指定一个方法的返回什么值;
- 结束方法,返回那个值。
public class Test03 {static int test(int testval. int target) {if(testval > target) return +1;else if(test < target) return -1;else return 0; // 不用加else 因为前面的if语句都有return语句,都可以终止执行。}public static void main(String[] args) {System.out.println(test(10, 5));}
}
如果在返回值是void的方法中,没有return语句,系统会在该方法的结尾处添加一个隐式的return。
'练习6
// P135
public class Exec06 {public static void main(String[] args) {IfElse.test(10, 5, 1, 20);System.out.println(IfElse2.test(10, 5, 1, 20));}}class IfElse {static int result = 0;static void test(int testval, int target, int begin, int end) {if (testval > begin && testval < end) System.out.println(testval + "在(" + begin + ", " + end + ")之间") ;if(testval > target) result = +1;else if(testval < target) testval = -1;else result = 0;}
}class IfElse2 {static int test(int testval, int target, int begin, int end) {if (testval > begin && testval < end) System.out.println(testval + "在(" + begin + ", " + end + ")之间") ;if(testval > target) return +1;else if(testval < target) return -1;else return 0;}
}
4.6 break和continue
练习7
public class Exec07 {/*public static void main(String[] args) {for(int i = 1; i <= 100; i++ ) {System.out.println(i);if (i == 99) break;}}*/public static void main(String[] args) {for(int i = 1; i <= 100; i++ ) {System.out.println(i);if (i == 99) return;}}
}
4.7 臭名昭著的goto
- 一般的continue会退回最内层循环的开头(顶部),并继续执行。
- 带标签的continue会到达标签的位置,并重新进入紧接在哪个标签后面的循环。
- 一般的break会中断并跳出当前的循环。
- 带标签的break会中断并跳出标签所致的循环。
4.8 switch
switch
的格式如下:
switch(integral-selector) {case integral-value1 : statement; break;case integral-value2 : statement; break;case integral-value3 : statement; break;// ...default: statement;
}
integral-selector(整数选择因子),是一个表达式,它能否产生整数值。如果iswitch会将ntegral-selector的值与多个integral-value(整数值)相比较,相等就执行对应的statement(单个语句,或者是多条语句,不需要用括号括起来)。每个case的后面都有一个break语句。但是最后一个default后面没有break语句。
integral-selector可以是int
、char
、enum
类型。
import java.util.Random;// 随机生成字母,并判断他们是元音还是辅音字母
// A的ASCII码是65,a的ASCII码是97
public class Test03 {public static void main(String[] args) {Random r = new Random(10);char ch;for (int i = 0; i < 10; i++) {if (i % 2 == 0) ch = (char) (r.nextInt(26) + 65);else ch = (char) (r.nextInt(26) + 97);System.out.print(ch + ", " + (int)ch + " : ");switch (Character.toUpperCase(ch)) {case 'A':case 'E':case 'I':case 'O':case 'U': System.out.println("vowel"); break;case 'Y':case 'W':System.out.println("sometimes a vowel"); break;default: System.out.println("consonant");}}}
}
// 运行结果
P, 80 : consonant
g, 103 : consonant
L, 76 : consonant
y, 121 : sometimes a vowel
E, 69 : vowel
s, 115 : consonant
F, 70 : consonant
m, 109 : consonant
V, 86 : consonant
c, 99 : consonant
练习8
import java.util.Random;public class Exec08 {public static void main(String[] args) {Random r = new Random(10);// 产生[2, 7)的整数值/*for (int i = 0; i < 2; i++) {int a = r.nextInt(7 - 2) + 2;switch(a) {case 2: System.out.println("222"); break;case 3: System.out.println("333"); break;case 4: System.out.println("444"); break;case 5: System.out.println("555"); break;default: System.out.println("666");}}/* 运行结果:555222*/for (int i = 0; i < 2; i++) {int a = r.nextInt(7 - 2) + 2;System.out.print("a=" + a + " : ");switch(a) {case 2: System.out.println("222");case 3: System.out.println("333");case 4: System.out.println("444");case 5: System.out.println("555");default: System.out.println("666");}}/*运行结果a=5 : 555666a=2 : 222333444555666*/}
}
练习9
public class Exec09 {public static void main(String[] args) {int n = args.length > 0 ? Integer.parseInt(args[0]) : 5;findFib(n);}public static void findFib(int n) {switch (n) {case 1 : System.out.println(1); break;case 2 : System.out.println("1、1"); break;default:StringBuilder builder = new StringBuilder("1、1、");for (int i = 3; i <= n; i++) {int fib = fib(i);builder.append(fib);builder.append("、");}System.out.println(builder.deleteCharAt(builder.length() - 1));}}private static int fib(int n) {if (n <= 1) return 1;return fib(n-1) + fib(n-2);}
}
// 运行结果
1、1、3、5、8
练习10
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;public class Exec10 {public static void main(String[] args) {Set<Object> set = new HashSet<>();for (int i = 1001; i < 10000; i++) {int a = i / 1000;int b = i % 1000 / 100;int c = i % 100 / 10;int d = i % 10;if (c == 0 && d == 0) continue;if (i == 6880)System.out.println();if (i == (a * 10 + b) * (c * 10 + d) && c != 0) set.add(i);if (i == (a * 10 + b) * (d * 10 + c) && d != 0) set.add(i);if (i == (a * 10 + c) * (b * 10 + d) && b != 0) set.add(i);if (i == (a * 10 + c) * (d * 10 + b) && d != 0) set.add(i);if (i == (a * 10 + d) * (b * 10 + c) && b != 0) set.add(i);if (i == (a * 10 + d) * (c * 10 + b) && c != 0) set.add(i);if (b != 0) {if (i == (b * 10 + a) * (c * 10 + d) && c != 0) set.add(i);if (i == (b * 10 + a) * (d * 10 + c) && d != 0) set.add(i);if (i == (b * 10 + c) * (d * 10 + a) && d != 0) set.add(i);if (i == (b * 10 + d) * (c * 10 + a) && c != 0) set.add(i);}if (c != 0) {if (i == (c * 10 + a) * (b * 10 + d) && b != 0) set.add(i);if (i == (c * 10 + a) * (d * 10 + b) && d != 0) set.add(i);if (i == (c * 10 + d) * (b * 10 + a) && b != 0) set.add(i);}if (d != 0) {if (i == (d * 10 + b) * (c * 10 + a) && c != 0) set.add(i);if (i == (d * 10 + c) * (b * 10 + a) && b != 0) set.add(i);if (i == (d * 10 + a) * (b * 10 + c) && b != 0) set.add(i);if (i == (d * 10 + a) * (c * 10 + b) && c != 0) set.add(i);}}Object[] arr = set.toArray();Arrays.sort(arr);for (Object i : arr) {System.out.println(i);}}
}
// 运行结果
1260
1395
1435
1530
1827
2187
6880
java学习笔记 java编程思想 第4章 控制执行流程相关推荐
- java学习笔记 java编程思想 第6章 访问权限控制
文章目录 6.1 包:库单元(the library unit) 6.1.1 代码组织 6.1.2 创建独一无二的包名 练习1 练习2 6.1.3 定制工具类 6.1.4 用import改变行为 练习 ...
- Java学习笔记-网络编程
Java提供了网络编程,并且在实际中有着大量运用 网络编程 网络编程概述 网络模型 OSI参考模型 TCP/IP参考模型 网络通讯要素 IP地址 端口号 传输协议 网络参考模型 网络通讯要素 IP地址 ...
- java学习笔记—java的学习路线
Java体系涉及到三个方面:J2SE,J2EE,J2ME(KJAVA). J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基 ...
- 狂神说Java学习笔记 Java基础
目录 机器语言 第二代语言(汇编语言) 第三代语言 高级语言 Java特性和优势 JDK(Java Development Kit) JRE(Java Runtime Enviroment) JVM( ...
- JAVA学习笔记—JAVA SE(四)JAVA核心库类(下)
文章目录 四.JAVA核心库类(下) 1. 异常机制和File类 1.1 异常机制 1.1.1 基本概念 1.1.2 异常的分类 1.1.3 异常的避免 1.1.4 异常的捕获 1.1.5 异常的抛出 ...
- Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围...
1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...
- Java学习笔记--Java中必记常见异常
JAVA常见异常 Java.io.NullPointerException null 空的,不存在的 NullPointer 空指针 空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象 ...
- java学习笔记 java编程思想 第7章 复用类
文章目录 7.1 组合语法 练习1 7.2 继承语法 7.2.1 初始化基类 练习3 练习4 练习5 带参数的构造器 练习6 练习7 练习8 练习9 练习10 7.3 代理 练习11 7.4 结合使用 ...
- java 学习笔记-网络编程(八)
网络编程 标签:学习各种网络协议的桥梁 什么是计算机网络 计算机网络的作用:资源共享和信息传递. 计算机网络的组成: a) 计算机硬件:计算机(大中小型服务器,台式机.笔记本等).外部设备(路由器.交 ...
最新文章
- mac os 系统密码正确的 但是进不了系统
- 浅谈巴拿马电源的谐波消除原理
- 【Python】值得推荐的12个jupyter lab插件
- Java 多线程(一) 基础知识与概念
- deebot扫地机器人响四声_别人家的扫地机器人,是“清洁小能手”,我家的可能是个“智障”...
- Hadoop单机伪分布式安装(完整版)
- ImportError: No module named 'requests.packages.urllib3'
- DBeaver 7.2.4 发布,可视化数据库管理平台
- python电力系统暂态分析_电力系统暂态计算——时域仿真方法
- SIM800L 模块 使用AT命令打电话
- 查询2021高考成绩位次,2021年江苏高考位次表及高考个人成绩排名查询
- 将数据库中用户表 名称设置对应的拼音账号sql
- 电脑连接WiFi后显示找不到……的DNS地址
- 日复一日的坚持着,希望自己早日如愿,把一个个职业规划尽快实现
- pt, px,em,ex,in等这类长度单位
- chrome 改变网页主题 设置黑色主题网页
- Unity与3ds Max的单位关系(使用FBX文件)
- Excel地图插件(ExcelMaps)
- 四工业控制系统的攻击场景研究
- java 强制gc_如何强制GC回收垃圾
热门文章
- Fabric 1.0源代码分析(28) Orderer #localconfig(Orderer配置文件定义)
- 实现一个js抽奖玩玩?
- 小学计算机教案用画笔绘画,电脑美术教学设计《神奇的画笔》
- 概论_第3章_已知联合密度求边缘密度
- 两百行C++代码实现yolov5车辆计数部署(通俗易懂版)
- 【技巧】带搜索的城市下拉
- 《缠中说禅108课》16:中小资金的高效买卖法
- Pyecharts中Map和Geo的使用笔记
- 用计算机按出童话,电脑争功童话故事作文
- 廉洁文化 计算机学院,计算机学院“廉洁在志·系列作品”征集活动评选结果