1 程序流程控制

  • 流程控制语句是用来控制程序中各语句执行顺序的语句,可以将语句组合完成能完成一定功能的小逻辑模块。
  • 流程控制方式采用结构化程序设计中规定的三种基本流程,即:
  • ①顺序结构:
    • 程序从上到下逐行地执行,中间没有任何判断和跳转。  
  • ②分支结构:
    • 根据条件,选择性的执行某段代码。
    • 有if--else和switch--case两种分支语句。  
  • ③循环结构:
    • 根据循环条件,重复性的执行某段代码。
    • 有while、do...while、for循环三种循环语句。
    • JDK1.5提供了foreach循环,方便遍历集合、数组元素。  

1.1 if-else语句

  • 格式1:
if(条件表达式){
//执行代码块;
}

  • 格式2:
if(条件表达式){
//执行代码块1;
}else{
//执行代码块2;
}

  • 格式3:
if(条件表达式1){
//执行代码块1;
}else if(条件表达式2){
//执行代码块2;
}
...
else{
//执行代码块n;
}

  • 示例:
package day04;

public class IfTest {
public static void main(String[] args) {
int heartBeats = 70;
if (heartBeats < 60 || heartBeats > 100) {
System.out.println("需要去医院做检查");
}
}
}
  • 示例:
package day04;

public class IfTest {
public static void main(String[] args) {
boolean flag = true;
if(flag){
System.out.println("周末出去玩");
}else{
System.out.println("天气不好,周末在家睡觉");
}
}
}
  • 示例:
package day04;

public class IfTest {
public static void main(String[] args) {
int age = 50;
if (age > 0 && age <= 0.6) {
System.out.println("婴儿");
} else if (age > 0.6 && age <= 2) {
System.out.println("幼儿");
} else if (age > 2 && age <= 6) {
System.out.println("儿童");
} else if (age > 6 && age <= 14) {
System.out.println("少年");
} else if (age > 14 && age <= 35) {
System.out.println("青年");
} else if (age > 35 && age <= 60) {
System.out.println("中年");
} else if (age > 60) {
System.out.println("老年");
}
}
}
  • 示例:
package day04;

import java.util.Scanner;

public class IfTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入分数:");
int score = in.nextInt();
if (score == 100) {
System.out.println("奖励一辆BMW");
} else if (score > 80 && score <= 99) {
System.out.println("奖励一台iphone xr");
} else if (score > 60 && score <= 80) {
System.out.println("奖励一个ipad");
} else {
System.out.println("什么奖励也没有");
} }
}
  • 示例:
package day04;

import java.util.Scanner;

/**
* 从键盘输入三个整数,对他们进行排序,并且按照从小到大排序
*/
public class IfTest {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入第一个整数");
int num1 = in.nextInt();
System.out.println("请输入第二个整数");
int num2 = in.nextInt();
System.out.println("请输入第三个整数");
int num3 = in.nextInt(); if (num1 >= num2) {
//num2 num1 num3
if (num3 >= num1) {
System.out.println(num2 + "<=" + num1 + "<=" + num3);
} else if (num3 <= num2) { //num3 num2 num1
System.out.println(num3 + "<=" + num2 + "<=" + num1);
} else {//num2 num3 num1
System.out.println(num2 + "<=" + num3 + "<=" + num1);
}
}else if(num1 < num2){
//num1 num2 num3
if(num3 >= num2){
System.out.println(num1 + "<=" + num2 + "<=" + num3);
}else if(num3 <= num1){ //num3 num1 num2
System.out.println(num3 + "<=" + num1 + "<=" + num2);
}else{ // num1 num3 num2
System.out.println(num1 + "<=" + num3 + "<=" + num2);
} }
}
}

1.2 switch-case语句

  • 格式:
switch(表达式){
case 常量1:
语句1;
//break;
case 常量2:
语句2;
//break;
……
default:
语句n;
//break;
}

  • switch语句的有关规则:
  • ①switch(表达式)中的表达式中的值必须是byte、short、char、int、枚举(JDK5.0)、String(JDK7.0)之一。
  • ②case自己中的值必须是常量,不能是变量名或不确定的表达式值。
  • ③同一个switch语句,所有case子句中的常量值互不相同。
  • ④break语句用来执行完一个case分支后使程序跳出switch语句块;如果没有break,程序会顺序执行到switch结尾。
  • ⑤default子句是可任选的。同时,位置也是灵活的。当没有匹配的case时,执行default。
  • 示例:
package day04;

import java.util.Scanner;

/**
* 如果成绩>=60分,则输出"合格";如果成绩<60分,则输出"不及格"。
*/
public class SwitchTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入分数:");
int score = input.nextInt();
switch (score / 10) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
break;
} }
}
  • switch和if语句的对比:
  • ①如果判断的具体数值不多,而且符号byte、short、char、int、String、枚举等几种类型。虽然两个语句都可以使用,建议使用switch语句,因为效率稍高。
  • ②其他情况,对区间判断,对结果为boolean类型判断,使用if语句。换言之,使用switch-case语句的,都可以改写为if-else语句,反之,不成立。

1.3 循环结构

  • 循环结构:在某些条件满足的条件下,反复执行特定代码的功能。
  • 循环的分类:
  • ①for循环。
  • ②while循环。
  • ③do-while循环。

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

  • ①初始化条件。
  • ②循环条件部分。
  • ③循环体部分。
  • ④迭代部分。

1.3.2 for循环

  • 格式:
 for (①初始化条件;②循环条件部分;④迭代部分){
③循环体部分;
}
  • 说明:
  • ②循环条件部分为boolean类型的表达式,当值为false的时候。退出循环。
  • ①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔。
  • ④可以有多个变量更新,用逗号隔开。  
  • 执行过程:①-->②-->③-->④-->②-->③-->……-->②。
  • 示例:
package day04;

public class ForTest {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println("helloworld!!!");
}
}
}
  • 示例:
package day04;

/**
* 100以内的偶数
*/
public class ForTest {
public static void main(String[] args) {
for (int i = 1; i <= 100; i = i + 1) {
System.out.println(i);
}
}
}
  • 示例:
package day04;

/**
* 编写程序从1循环到150,并在每行打印一个值,另外在每个3的倍数行上打印"foo",在每个5的倍数行上打印“biz”,在每个7的倍数行上打印输出“baz”。
*/
public class ForTest {
public static void main(String[] args) {
for (int i = 1; i <= 150; i++) {
System.out.print(i);
if (i % 3 == 0) {
System.out.print("\t" + "foo");
}
if (i % 5 == 0) {
System.out.print("\t" + "biz");
}
if (i % 7 == 0) {
System.out.print("\t" + "baz");
}
System.out.println();
}
}
}
  • 示例:
package day04;

import java.util.Scanner;

/**
* 输入两个正整数m和n,求其最大公约数和最小公倍数。
* 例如:12和20的最大公约数是4,最小公倍数是60。
*/
public class ForTest {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入第一个正整数:");
int m = input.nextInt();
System.out.println("请输入第二个正整数:");
int n = input.nextInt(); //求最大公约数:先求最小正整数,比如12和20的最小正整数是12,然后拿12和20和12、11、10取模,如果都能取模等于0,即最大公约数。
int highestCommonDivissor = 0;
int min = (m >= n) ? n : m;
for (int i = min; i >= 1; i--) {
if (m % i == 0 && n % i == 0) {
highestCommonDivissor = i;
break;
}
}
System.out.println("最大公约数是:" + highestCommonDivissor); //求最小公倍数:先求最大值,这是循环的起始值;循环的终止条件是两个数相乘的结果
int lowestCommonMultiple = 0;
int max = (m >= n) ? m : n;
for (int i = max; i <= m * n; i++) {
if (i % m == 0 && i % n == 0) {
lowestCommonMultiple = i;
break;
} }
System.out.println("最小公倍数是:" + lowestCommonMultiple); }
}

1.3.3 while循环

  • 格式:
①初始化条件;
while(②循环条件部分){
③循环体部分;
④迭代部分;
}
  • 说明:
  • ①注意不要忘记④迭代部分。否则,循环将变为死循环。
  • ②for循环和while在某种程序上是可以相互转换的。
  • 执行过程:①-->②-->③-->④-->②-->③-->④-->……。
  • 示例:
package day04;

public class WhileTest {
public static void main(String[] args) {
int result = 0;
int i = 1;
while (i <= 100) {
result += i;
i++;
}
System.out.println("1-100的整数和是:" + result);
}
}

1.3.4 do-while循环

  • 格式:
①初始化条件;
do{
③循环体部分;
④迭代部分;
}while (②循环条件部分);
  • 说明:do-while循环至少会执行一次。
  • 执行过程:①-->③-->④-->②-->③-->④-->……。
  • 示例:
package day04;

public class DoWhileTest {
public static void main(String[] args) {
int result = 0;
int i = 1;
do {
result += i;
i++;
} while (i <= 100);
System.out.println("1-100之内的整数和是:" + result);
}
}

1.3.5 循环嵌套

  • 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for、while、do...while均可以作为外层循环或内层循环。
  • 实际上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为false的时候,才会完全跳出内层循环,才可结束外层循环的当次循环,开始下一次循环。
  • 如果外层循环次数为m次,内层循环为n次,那么内层循环体实际上需要执行m*n次。
  • 示例:
package day04;

public class NestedLoop {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (j * i) + "\t");
}
System.out.println();
}
}
}
  • 示例:
package day04;

/**
* 100以内的所有质数的输出。
* 质数:素数,只能被1和其本身整数的自然数。
* 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
* 最小的质数是2。
*/
public class PrimeNumber {
public static void main(String[] args) { for (int i = 2; i <= 100; i++) {
boolean flag = false;//表示质数
for (int j = 2; j <= i - 1; j++) {
if (i % j == 0) {//不是质数
flag = true;
}
}
if (!flag) {
System.out.println(i);
} }
}
}
  • 示例:
package day04;

/**
* 100以内的所有质数的输出。
* 质数:素数,只能被1和其本身整数的自然数。
* 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
* 最小的质数是2。
*/
public class PrimeNumber {
public static void main(String[] args) { for (int i = 2; i <= 100; i++) {
boolean flag = false;//表示质数
for (int j = 2; j <= i - 1; j++) {
if (i % j == 0) {//不是质数
flag = true;
break;//优化1
}
}
if (!flag) {
System.out.println(i);
} }
}
}
  • 示例:
package day04;

/**
* 100以内的所有质数的输出。
* 质数:素数,只能被1和其本身整数的自然数。
* 思路:从2开始,到这个数-1结束为止,都不能被这个数本身整数。
* 最小的质数是2。
*/
public class PrimeNumber {
public static void main(String[] args) { for (int i = 2; i <= 100; i++) {
boolean flag = false;//表示质数
//优化2
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0) {//不是质数
flag = true;
break;//优化1
}
}
if (!flag) {
System.out.println(i);
} }
}
}

java基本语法三的更多相关文章

  1. Java基础语法(三)---数组

    一.概念         同一种类型数据的集合.简单的来说就是一容器,用来装东西的. 使用数组的好处:可以自动给数组中的元素从0开始编号,方便操作这些元素. 二.一维数组的格式 格式1:元素类型 [ ...

  2. Java基础语法<三> 输入输出

    1. 读取输入 Scanner in = new Scanner(System.in);   输入一行(包含空格) String str = in.nextLine()   读取一个单词(以空白符作为 ...

  3. JavaSE基础(三)--Java基础语法

    Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...

  4. 011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三—— 变量值——即Java中的“字面值”

    011 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 05 变量的三个元素的详细介绍之三-- 变量值--即Java中的"字面值" 变量值可以是 ...

  5. 010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二——变量类型——即Java中的数据类型

    010 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 04 变量的三个元素的详细介绍之二--变量类型--即Java中的数据类型 Java中变量的三要素 变量名 变 ...

  6. JAVA学习(三):Java基础语法(变量、常量、数据类型、运算符与数据类型转换)

    Java基础语法(变量.常量.数据类型.运算符与数据类型转换) 1.变量 Java中.用户能够通过指定数据类型和标识符来声明变量.其基本的语法为: DataType identifier; 或 Dat ...

  7. java面向对象编程——第二章 java基础语法

    第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...

  8. JAVA正则表达式语法大全

    [正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字:"^[0-9]*$". 只能输入n位的数字:"^\d{n ...

  9. java基础语法笔记

    这段时间看了一些java,急了一些笔记,记下一遍以后复习用! 2016-07-24 15:12:40 java很多语法都跟C#类似,下面列举一些不同的地方******注意***** java中的系统方 ...

随机推荐

  1. java的Scanner获取输入内容

    //导入 scanner的包 import java.util.Scanner; Scanner scanner = new Scanner(System.in); System.out.printl ...

  2. AI学习经验总结

    我的人工智能学习之路-从无到有精进之路 https://blog.csdn.net/sinox2010p1/article/details/80467475 如何自学人工智能路径规划(附资源,百分百亲 ...

  3. TCP/IP协议(4):网络层

    网络层上有IP.ICMP.IGMP等协议. 1.IP地址 在OSI模型中,三层网络层负责IP地址,IP数据报帧头中的源地址和目的地址就是指IP地址.IPV4类型IP地址为32位4个字节,IPV6类型I ...

  4. java中的四种修饰符:private、protected、public和default的区别

      本类 本包 子类 包外 public 可以 可以 可以 可以 protected 可以 可以 可以 不可以 default 可以 可以 不可以 不可以 private 可以 不可以 不可以 不可以 ...

  5. c# 二维list排序和计时

    using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using S ...

  6. excel的小bug

    http://muchong.com/html/201710/3913047.html Excel也有相同现象,试着计算:exp(-1.5^2),exp(0-1.5^2),exp(-(1.5)^2)看 ...

  7. Mysql分析优化查询的方式

    一:查询语句分析 1.通过create index idx_colunmsName on tableName(columns)为某个表的某些字段创建索引,注意主键和唯一键都会自动创建索引: 如为表st ...

  8. .net 根据图片网络地址获取图片二进制字节数据流

    根据html路径获取图片的字节 /// <summary> ///根据html路径获取图片的字节 /// </summary> /// <param name=" ...

  9. c需要注意的细节

    1.在纯的.c文件中,例如struct Stu,之后不可以只使用Stu作为关键字来表示这个定义的结构体类型,一定要使用struct Stu一起作为类似int这种关键字来定义或者获取size. 2.函数 ...

  10. 18:description方法

    本小节知识点: [掌握]description基本概念 [掌握]description重写的方法 [了解]description陷阱 1.description基本概念 NSLog(@"%@ ...