java程序的三种结构
从结构化程序设计角度出发,程序有三种结构:
顺序结构:
JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行顺序结构是最简单的算法结构,语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的,它是任何一个算法都离不开的一种基本算法结构。顺序结构在程序流程图中的体现就是用流程线将程序框自上而地连接起来,按顺序执行算法步骤。
选择结构:
if(条件表达式){
语句;
}
意义:if语句对条件表达式进行一次测试,若测试为真,则执行下面的语句,否则跳过该语句
条件表达式必须是布尔表达式
示例:
import java.util.Scanner;
public class TestIf{
public static void main(String[] args){
/*
0~18:你还是小屁孩!
18~30:你是精力旺盛小青年!
30~50:你是处在人生顶峰的老男人!
大于50:你已经人老珠黄了!
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
if(age> && age<=){
System.out.println("你还是小屁孩");
}
if(age> && age<=){
System.out.println("你是精力旺盛小青年");
}
if(age> && age<=){
System.out.println("你是出于人生巅峰的老男人");
}
if(age>){
System.out.println("你已经日落西山了");
}
}
}

if-else双选择结构:如果条件为true执行一个操作,为false执行另一个操作:
流程图: 
示例:
public class IfElse{
public static void main(String[] args){
double r = Math.random()*;
double s = Math.PI*r*r;
double c = *Math.PI*r;
System.out.println("半径为:" + r);
System.out.println("面积为:" + s);
System.out.println("周长为:" + c);
if(s>=c){
System.out.println("圆的面积大于周长");
}else {
System.out.println("圆的周长大于面积");
}
}
}

If-elseif-else多选择结构:
if(布尔表达式1) {
语句块1;
} else if(布尔表达式2) {
语句块2;
}………
else if(布尔表达式n){
语句块n;
} else {
语句块n+1;
}
逐条对if语句进行判断,条件匹配,进入语句体不再进行判断,否则对if语句继续判断匹配

public class TestIfElse3{
public static void main(String[] args){
int age = (int)(Math.random()*100);
System.out.println("您的年龄是:" + age + ",属于:");
if(age<15){
System.out.println("儿童");
}else if(age<35){
System.out.println("青年");
}else if(age<50){
System.out.println("壮年");
}else if(age<85){
System.out.println("老年");
}else {
System.out.println("老寿星");
}
}
}

switch多选择结构
根据表达式值的不同执行许多不同的操作
Switch语句:case标签必须是整数或者枚举,不能是字符串。
switch (表达式) {
case 值1:
语句序列;
[break];
case 值2:
语句序列;
[break];
… … … … …
[default:
默认语句;]
}
switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾
与任一case值不匹配,则进入default语句(如果有的话)

import java.util.Scanner;
public class SwitchTest1{
public static void main(String[] args){
int number;
System.out.println("请拨号:");
Scanner sc = new Scanner(System.in);
number = sc.nextInt();
switch(number){ case 1:
System.out.println("打给爸爸。。。");
break;
case 2:
System.out.println("打给妈妈。。。");
break;
case 3:
System.out.println("打给爷爷。。。");
break;
case 4:
System.out.println("打给奶奶。。。");
break;
default:
System.out.println("对不起,没有你要输入的亲情号");
}
}
}

根据输入的月份,打出该月份的天数(不需要考虑润年、闰月)
int month =(int)(1+Math.random()*12);
if(month>0&&month<13){
switch (month) {
case 2:
System.out.println("28天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("30天");
break;
default:
System.out.println("31天");
} // 31:1,3,5,7,8,10,12 30:4,6,9,11 28:2 }else{
System.out.println ("月份不合法!");
}

循环结构:
while语句格式
while (布尔表达式) {
循环体;
}
在循环刚开始时,会计算一次“布尔表达式”的值,若条件为真,执行循环体。而对于后来每一次额外的循环,都会在开始前重新计算一次。
语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。

public class WhileTest {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100) { // 1+2+3+…+100=?
sum += i; //sum = sum+i;
i++;
}
System.out.println("Sum= " + sum);
}
}

while语句结构
do{
循环体;
}while(布尔表达式);
先执行循环体,后判断boolean表达式,循环体至少执行一次,而while循环可能一次都不执行
示例:
public static void main(String[] args) {
int i=0;
int sum = 0;
do{
sum +=i;
i++;
}while(i<=100);
System.out.println(sum);
}

For循环
For循环语句是支持迭代的一种通用结构,是最有效最灵活的循环结构
语法形式:
for(循环变量初始化; 布尔表达式;循环变量改变语句)

n for循环在第一次反复之前要对循环变量进行初始化。随后,它会进行条件测试,而且在每一次反复的时候,循环变量进行某种形式的“改变”。
- 初始化部分设置循环变量的初值
- 条件判断部分为任意布尔表达式
- 迭代因子控制循环变量的增减
public static void main(String[] args){
int sum = 0;
for (int i = 0; i <= 100; i++) {
sum += i;
}
System.out.println("Sum= " + sum);
}

如何使用循环结构呢?
当不知道执行次数循环次数的时候使用while循环,当至少执行一次的时候使用do...while循环,当有明确循环次数哦的时候使用for循环
一般而言,能用while循环的都可以用for循环解决,而且for循环看着更加整洁大方
break语句和continue语句
在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句
public class BreakTest {
public static void main(String[] args) {
int total = 0;
System.out.println("Begin");
while(true) {
total++;
int i = (int)Math.round(100 * Math.random());
if(i == 88) break;
}
System.out.println("Game over, used " + total + " times.");
}
}

当条件满足时,退出当前循环。不再执行以后的循环
continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
把100~150之间不能被3整除的数输出:
public class ContinueTest {
public static void main(String[] args) {
int count = 0;
for (int i = 100; i < 150; i++) {
if (i % 3 == 0){
continue;
}
System.out.println(i);
}
}
}
无限循环的第二种形式是for(;;)。编译器将while(true)与for(;;)看作同一回事。
用循环求九九乘法表:
public class HomeWork1{
//九九乘法表
public static void main(String[] args){
for(int i=1;i<10;i++){
for(int j=1;j<=i;j++){
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}

java程序的三种结构的更多相关文章
- Java程序员的现代RPC指南(Windows版预编译好的Protoc支持C++,Java,Python三种最常用的语言,Thrift则支持几乎主流的各种语言)
Java程序员的现代RPC指南 1.前言 1.1 RPC框架简介 最早接触RPC还是初学Java时,直接用Socket API传东西好麻烦.于是发现了JDK直接支持的RMI,然后就用得不亦乐乎,各种大 ...
- OID,主键生成策略,PO VO DTO,get和load区别,脏检查,快照,java对象的三种状态
主键生成策略 sequence 数据库端 native 数据库端 uuid 程序端 自动赋值 生成的是一个32位的16进制数 实体类需把ID改成String 类型 assigned 程序端 需手 ...
- Tomcat部署发布JSP应用程序的三种方法 (转)
Tomcat部署发布JSP应用程序的三种方法 1.直接放到Webapps目录下 Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应 ...
- 斐波那契数列-java编程:三种方法实现斐波那契数列
题目要求:编写程序在控制台输出斐波那契数列前20项,每输出5个数换行 斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列 ...
- 【Java 线程的深入研究1】Java 提供了三种创建线程的方法
Java 提供了三种创建线程的方法: 通过实现 Runnable 接口: 通过继承 Thread 类本身: 通过 Callable 和 Future 创建线程. 1.通过实现 Runnable 接口来 ...
- JavaSE(一)Java程序的三个基本规则-组织形式,编译运行,命名规则
一.Java程序的组织形式 Java程序是一种纯粹的面向对象的程序设计语言,因此Java程序必须以类(class)的形式存在,类(class)是Java程序的最小程序单位. J ...
- python程序的三种控制结构
程序的三种控制结构 什么是控制结构? """ 程序有三种基本结构组成:顺序结构.分支结构.循环结构.任何程序都是由这三种基本结构组成. 顺序结构是程序按照线性顺序依次执行 ...
- Eclipse远程调试Java代码的三种方法
Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...
- Hibernate 系列 07 - Hibernate中Java对象的三种状态
引导目录: Hibernate 系列教程 目录 1. Java对象的三种状态 当应用通过调用Hibernate API与框架发生交互时,需要从持久化的角度关注应用对象的生命周期. 持久化声明周期是Hi ...
随机推荐
- requests.get() 的 headers 参数
官方文档requests.get()方法的定义如下: 源码如下: 看到最后一行return,get方法最后是通过调用requests.request 方法实现的,其实在其它的请求方法如post,put ...
- 导入导出Oracle
- kafka-producer kerberos 原理和配置
kerberos简单介绍 kerberos这一名词来源于希腊神话“三个头的狗---地狱之门守护者”后来沿用作为安全认证的概念,该系统设计上 采用客户端/服务器结构与DES(Data Encryptio ...
- django无法同步mysql数据库 Error:1064
[问题] 具体问题:新建django工程,使用django的manage.py的 migrate命令进行更改. 在初始化数据库表时,失败,错误信息为 django.db.migrations.exce ...
- centos7以rpm方法装mysql5.7及大坑
环境: CentOS Linux release 7.5.1804 (Core) Mysql版本: MySQL-5.7.17-1.el6.x86_64.rpm-bundle.tar 下载地址( ...
- Ansible 快速部署 Zabbix 4
阅读本文章需要具有Ansible.Zabbix基础.本次教程基于如下环境: CentOS 7.x Zabbix 4.0 Ansible 2.5 服务器初始化 关闭防火墙.selinux,添加epel常 ...
- 轻量应用服务器 访问jsp页面就直接下载的问题
本地localhost 运行可以 用自己的ip不行.出现这个问题实质原因就是Tomcat服务器就没有起到作用,运行不了jsp文件.这个是核心.去排查错误!网上查了好几天了根本没有解决我的我的问题. 1 ...
- Windows启动配置数据(BCD)存储文件包含一些无效信息
Windows启动配置数据(BCD)存储文件包含一些无效信息-照牛排 http://www.zhaoniupai.com/archives/223.html 1)近来封装Windows 7,遇到挫折. ...
- 【fork/join】java并发编程-fork/join示例
package com.chinamobile.epic.tako.common.graphite.query.sync.impl; import com.google.common.collect. ...
- Android Studio Fragment 无法获取 id的方法
在Fragment中,因为继承的父类的不同,导致在Fragment中无法获取到控件的id,此时,只要在获取findviewbyid前加上 getView()就可以了.