JavaSE 分支结构
来源:互联网 发布:mac忘记开机密码怎么办 编辑:程序博客网 时间:2024/06/05 15:42
分支结构
@Author:云都小生(Cloudkings)
分支结构(if-else if-else)
在编程中,我们经常会碰到这种情况,你想设计一个方案,给自己的程序上锁,只有输入正确密码的时候,才能使用,这个怎么来实现呢?
在没有学习相应的知识之前,我们肯定是写不出来。但是想实现这样一个功能,肯定绕不开一个概念——判断。判断在Java中就是一种分支结构,就像上面说的,两种情况,输入密码正确了,你可以继续接下去的功能,如果密码不正确,就退出。这就是分支结构。
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int pass = 888666; int enterPass = 0; System.out.print("请输入密码:"); enterPass = in.nextInt(); if(enterPass == pass) { System.out.print("密码正确!"); } } }/* if(表达式——即判断条件) { 当条件为真的时候,执行的代码··· }*/
从上面的程序中,我们已经了解了if的语法。为了进一步掌握这种语法,所以我们做一个练习,我们顺便来扩展一下这个程序。
现在考虑一下,如果我们的密码包含了abc这些字符(或者特殊字符),一旦密码中包含这些字符,输入就会出错。那怎么解决?
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner in = new Scanner(System.in); String pass = "cloudking+"; String enterPass = null; System.out.print("请输入密码:"); enterPass = in.next(); if(pass.equals(enterPass)) { System.out.print("密码正确!"); } } }
扩展了一个知识点,字符串对比需要用 (str1)equals.(str2) 如果你用 str1 == str2 这种来进行判断,那肯定会出错。因为前者比较的是值,后者比较的是引用。
现在考虑另一种情况,如果密码不正确,你也想给出一个提示,那怎么做?
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner in = new Scanner(System.in); String pass = "cloudking+"; String enterPass = null; System.out.print("请输入密码:"); enterPass = in.next(); if(!pass.equals(enterPass)) { System.out.println("密码错误!"); } else { System.out.println("密码正确!"); } } }if(表达式){ 表达式为真时执行的代码···}else //"否则"的意思{ 代码···}
else是“否则”的意思。如果输入的密码不等于正确的密码,就显示密码错误,否则!就显示密码正确!
最后再来考虑一种情况,你想要对输入进行判断,如果是100输出”优”,如果是99~90就输出”一般”,90以下都输出差。这个怎么办?这意味着你要进行两次判断呀。
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner in = new Scanner(System.in); double score = 0; System.out.print("请输入成绩"); score = in.nextDouble(); if(score == 100) { System.out.print("优"); } else if(score <= 99 && score >=90) { System.out.print("良"); } else { System.out.print("差"); } }}if(表达式){ 表达式为真时执行的代码···}else if(表达式){ 表达式为真时执行的代码···}else //"否则"的意思{ 代码···}
else if是类似“再如果”的意思,如果第一个if条件没有满足时,就会再进行else if的判断。如果第一个if就已经满足了,那else if就不会判断。允许多个else if出现在一个分支体系中,并且允许分支语法相互嵌套。
if(表达式){
表达式为真时执行的代码···
}
else if(表达式)
{
表达式为真时执行的代码···
}
else if(表达式)
{
表达式为真时执行的代码···
}
else if····
else //”否则”的意思
{
代码···
}
/* 相互嵌套 */
if(表达式)
{
if(表达式)
{
代码···
}
else
{
代码···
}
}
if(表达式)
{
if(表达式)
{
代码···
}
else
{
代码···
}
}
else
{
代码···
}
主要看你的问题是怎样,根据问题,去决定自己要怎样使用这些语法,需要怎样的分支。
分支结构(switch)
如果每次想进行判断,就需要if或者else一次,会不会很麻烦。如果我需要一次性进行十几种判断,那怎么办?莫慌,Java提供了一种灵活简便的判断语法——switch。
{
case a:代码···
case b:代码···
case c:代码···
case d:代码···
defualt:代码···
}
首先,判断switch(开关)后面的那个值,在下面的case(情况)列表中,寻找相同的值,碰到相同的值就会执行它后面的代码,如果一整个case列表都没有找到,就默认执行defualt(默认)后面的代码。
import java.util.Scanner;
public class Test
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int x = 0;
System.out.print("请输入数字进行抽奖:");
x =in.nextInt();
switch(x)
{
case 1:System.out.print("一等奖!");
case 2:System.out.print("二等奖!");
case 3:System.out.print("三等奖!");
defualt:System.out.print("没有奖励!");
}
}
}
这个程序看上去没有什么问题,其实是大有问题。当你输入1之后,的确按照你的要求执行了后面的代码。可执行完case 1的代码之后,它还执行了后面各个case以及defualt的代码,这个怎么解决?
很简单!在每个case的代码后, 加上break(中断),一旦执行完某个case的代码后,就立即中断整个switch,直接跳出整个switch。
import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int x = 0; System.out.print("请输入数字进行抽奖:"); x = in.nextInt(); switch(x) { case 1:System.out.print("一等奖!");break; case 2:System.out.print("二等奖!");break; case 3:System.out.print("三等奖!");break; defualt:System.out.print("没有奖励!");break; } }}
以上,就是Java的两种分支结构的语法。
程序框图
为了了解整个程序的运行逻辑,有时候我们经常会把整个程序的过程,抽象成一个流程图。有些时候,某些问题为了让我们理解,然后用程序去实现,也经常会给出一张抽象的流程图。了解有关程序框图的知识,能让我们更容易理解问题,看清楚程序的运行逻辑。
在流程图中,有这么几种形状,它们都代表不同的意思。
·起止框 圆角方形 程序开始与结束的地方
·输入输出 平行四边形 任何需要输出输入的位置
·赋值、计算 长方形 程序中需要处理数据的地方
·判断 棱形 判断的位置处
各个图形之间是通过箭头连接起来,达成一张完整的程序流程图。
2017/8/28 3:08:24 @Author:云都小生(Cloudking)
- JavaSE 分支结构
- JavaSe基础(2)-- 分支结构
- Javase—分支语句
- 分支结构
- 分支结构
- 分支结构
- 分支结构
- 分支结构
- 分支结构
- 分支结构
- 分支结构
- Javase—分支语句习题
- 分支结构、循环结构
- JavaSE 结构介绍
- JavaSE 循环结构
- 结构化程序设计----分支结构
- 分支结构与循环结构
- Java 循环结构+分支结构
- WebStorm编辑器
- volatile 关键字
- laravel5.0 自定义服务类
- Redis密码验证情况下创建集群
- 【astron转载】一张图看懂Hive
- JavaSE 分支结构
- Redis配置成服务启动
- 笔记-类文件结构
- jvm 虚拟机工作原理
- oracle-创建存储过程、函数、包、游标、视图
- Python的GUI框架PySide
- 深入理解变量 作用域 内存
- 一个利用“永恒之蓝”漏洞传播的挖矿程序分析
- 【UE4教程文档翻译】First Person Shooter C++ Tutoria(第一人称射击C++教程)