java判断_java条件判断

条件判断

java语言和C 语言类似,主要包括三种基本的控制流结构:

1. 程序顺序执行

2. 程序的判断结构

3. 程序的循环结构

如果把前面所学习的关键字理解成java语言的词汇量的话,那么结构化程序设计就是java语言所谓的”语法”了,这种跟计算机沟通的语言很简单。

前面章节中我们提过,java是以分号(;)作为一个语句的结束的,与换行符没有关系,任何一句表达式后面都必须带有一个分号(;),这样才算正常结束,否则会报语法错误,例如:

int a=100;

System.out.println(a);

以上都成为单条语句,而把多个语句放到一个形如 “{...代码...}”这样代码块中,成为语句块,就是以左大括号“{”开始,以右大括号结束“}”的代码我们成为语句块,左右大括号必须成对出现,语句块可以互相嵌套。语句块可以作为一个整体,类似把多个语句块组合成为一个语句块。我们在代码中可以任意使用包含多个语句成为一段语句块,有时也称为程序块。但是在一些情况下,大括号是不可缺少的,比如定义一个类的时候,或者定义一个普通方法时,后面就必须要使用大括号,包住一段语句块。例如以下的:

public class Abc {//这个是必须的

public static void main(String[] args) {//这个是必须的

float a = 346.756565f;//这个大括号可以删除

{int b = (int) a + 10; //将 a 转换为整型

System.out.println(b);

}

}

}

下面我们讲到的条件判断和循环判断的语法是会大量使用到程序块。

判断逻辑是我们生活中最常见的逻辑判断,计算机来执行跟人类思维也是极为类似的:如果[条件成立]就怎样做,否则就那样做。可以这么说,计算机最擅长的就是判断true/false了。

一、if-else 语句

if语句是最常见的判断语句,通过对条件(conditional)的判断觉得程序的走向。其基本格式如下:

if(条件表达式)

语句1

else

语句2

在执行该判断语句前,都是先执行了条件表达式的语句,条件表达式的返回结果必须是布尔值(boolean),根据条件表达式的返回,如果是true,那么就执行语句1的内容,如果是false就执行else后面的语句2。如下面这个例子:

int i=1;if(i>10)

System.out.println(i+"大于10");elseSystem.out.println(i+"不大于10");

先定义了整型i并赋值1,然后在执行if里面的条件判断式i是否大于10,返回的结果是false,所以执行的是else后面的语句。

在上面的格式中, else是可选部分,所以最简单的条件判断式如下:

if(条件表达式)

语句1

如下面这个例子:

int i=1;if(i>10)

System.out.println(i+"大于10");

由于条件判断是false,所以这个程序不会输出任何内容。也正是因为else是可选部分,在嵌套使用的时候就会出现理解上的问题,有时候我们面对下面这个例子的时候就会感觉不清晰了

int i = 1;if (i > 10)if (i < 5)

System.out.println(i+ "小于5");elseSystem.out.println(i+ "不大于10");

else是对应那一个if呢?java是与最近一个if配对的。程序员在写代码时,适当的缩进代码也可以提高代码的可读性,当然我们有更好的解决办法。

if和else后面可以跟着语句,当然也可以跟着语句块,其格式如下:

if(条件表达式){

语句块1

}else{

语句块2

}

建议大家在写if语句时,就算后面只有一个语句,也可以使用大括号包住,形成语句块,这样可以提高程序的可读性,如上面的例子,可以修改成为这样:

if (i > 10) {if (i < 5) {

System.out.println(i+ "小于5");

}else{

System.out.println(i+ "不大于10");

}

}

二、else-if 语句

有时候条件判断不止两个,可能就需要使用else-if语句了,其语法格式如下:

if(条件表达式)

语句1

else if(条件表达式)

语句2

else if(条件表达式)

语句3

else if(条件表达式)

语句4

...

else

语句

这样的语句在我们以后的编程中会经常用到,判断的过程是从上往下的判断条件表达式,如果第一个返回的是false就会判断第二个,依次类推,但是如果其中一个返回了true,那么就会执行后面的语句,然后整个else-if语句就会退出,后面如果还有else-if语句也不会在去判断执行的了。我们常常也会在最后面添加一个else语句,当然这也是可选的,这样的效果就是如果上面的所有的if判断都是false,那么就会执行else后面的语句。像上面的if-else一样,后面也是可以跟着语句块的,为了增强程序的可读性,我们后面也常常会使用语句块。格式如下:

if(条件1){

条件1==true时执行的逻辑

}else if(条件2){

条件2==true时执行的逻辑

}else if(条件n){

条件n==true时执行的逻辑

}else{

以上条件均不满足而执行的默认的逻辑

}

下面我们具几个实现,比如我们要判断用户年龄小于16岁时不允许登陆游戏网站,那么我们可以使用以下代码:

int uage = 17;if (uage < 18) {

System.out.println("Sorry,请关注学业!");

}else{

System.out.println("欢迎登陆!");

}

int result=85;//成绩

if(result>90){

System.out.println("优秀");

}else if(result>80){

System.out.println("良好");

}else if(result>60){

System.out.println("合格");

}else{

System.out.println("不合格");

}

if判断也可以嵌套使用,也就是在语句块里也可以包含一个if判断表达式,如下面这个例子。其中Scanner是获得用户输入对象,请看下面这个例子:

importjava.util.Scanner;public classTt {public static voidmain(String[] args) {int num0;//第一个数

int num1;//第二个数

int type;//计算类型

System.out.print("*"请输入num0: "*");

Scanner scr= newScanner(System.in);

num0= scr.nextInt();//程序会在此等待用户的输入

System.out.print("*"请输入num1: "*");

scr= newScanner(System.in);

num1=scr.nextInt();

System.out.print("*"请输入计算类型(0表示加 ; 1表示减 ; 2表示乘 ; 3表示除): "*");

scr= newScanner(System.in);

type=scr.nextInt();if (type == 0) {

System.out.println(num0+ "*"+"*" + num1 + "*" ="*" + (num0 +num1));

}else if (type == 1) {

System.out.println(num0+ "*"-"*" + num1 + "*" ="*" + (num0 -num1));

}else if (type == 2) {

System.out.println(num0+ "*"*"*" + num1 + "*" ="*" + (num0 *num1));

}else if (type == 3) {//除法,使用嵌套的if语句判定除数不能为0

if (num1 == 0) {

System.out.println("*"除数不能为0"*");

}else{

System.out.println(num0+"*"/"*"num1+ "*" ="*" + (num0 /num1));

}

}else{//非法输入

System.out.println("*"您的输入有误!计算类型只能是[0,1,2,3]"*");

}

}

}

在这个程序中用了Scnner获得用户的输入,程序运行到scr.nextInt()的时候会停下来,等待用户的输入,用户输入后按回车程序才会继续往下运行,在程序中我们对除法的判断又嵌套了一个除数不能为0的判断。

三、switch选择语句

switch语句是另一种判断语句的写法,这种语句在选择时是对case子句的值进行相等测试,其功能性其实和if判断语句一样,仅仅只是书写的方式不同,两者之间可以互通,语法上面没有if语句简介。其具体的语法格式如下:

switch(被判断的变量)

{

case 条件1:

执行条件1的逻辑

break;

case 条件2:

执行条件1的逻辑

break;

case n:

执行条件n的逻辑

break;

default:

以上条件均不满足而执行的默认的逻辑

}

switch后面的只是被判断的变量,当与case后面的条件相等是,那么case后面的语句就会执行,最后面的default是可选项,可根据你的业务逻辑需要决定是否添加,功能类似else语句,就是上面所有的case条件都不满足时就会执行default后面的语句。

值得注意的是,在JDK 7以前参加被判断的变量的类型只可以是int, byte, char, short等数据类型,但是在JDK 7以后,被判断的变量的类型被增强支持对字符串String的判断。如果你还是使用JDK 6就要特别注意这一点了。

一般来说,switch与case成功匹配,还会继续顺序执行以后所有的程序代码,因此一般都要在判断成功后面添加break语句跳出判断语句块。有关break关键字的详细说明我们会在后面的章节中说明。

看看这个例子:已知变量int month=1,使用switch判断语句,如果month等于1就输出"一月",等于2就输出"二月",如此类推。实现代码如下:

int month=4;switch(month){case 1:

System.out.println("一月");break;case 2:

System.out.println("二月");break;case 3:

System.out.println("三月");break;case 4:

System.out.println("四月");break;//...中间的5~12用户自己补充。

default:

System.out.println("month只能是1~12");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值