java:三目运算符基础

三目运算符

简介

三目运算符,又称条件运算符,是计算机语言的重要组成部分。它是唯一有3个操作数的运算符。
对于条件表达式 x = ( a > b) ? c : d,先计算条件(a>b),然后进行判断。如果(a>b)的值为true,计算c的值,x = c的值;否则,计算d的值,x = d的值。一个条件表达式绝不会既计算c,又计算d。

例子

java函数实现返回a,b,c中最大值:
没有三目运算符:

public static int max(int a, int b, int c) {
    
    
	if(a>=b && a>=c)
		return a;
	else if(b>=a && b>=c)
		return b;
	else
		return c;
}

用三目运算符:

public static int max(int a, int b, int c) {
    
    
		return (a>=b) ? ((a>=c) ? a : c) : ((b>=c) ? b : c);
	}

可以很容易地看出来,三目运算符地互相嵌套使用,使得代码整体简洁了很多,但也许会有很多同学说,那我其实用if else也可以实现三目运算符的功能,这个运算符会不会其实有点多余。先不急,来看下接下来的这个例子。

特殊用途

看下面的题目:字母环形解密(填空)
将26个英文字母按顺时针方向排成一个圆环。密钥是一个整数。

已知加密方法如下:

若密钥 key≥0,则从明文字母开始按顺时针方向走 ∣key∣ 步得到密文字母;
若密钥 key<0,则从明文字母开始按逆时针方向走 ∣key∣ 步得到密文字母。
下面的程序输入密文和密钥,输出明文。请在空白处填写适当内容完成该程序。

#include <stdio.h>
int main()
{
    
    
    char plain, secret;
    int key;
    scanf(" %c %d", &secret, &key);
    ____________________
    printf("%c\n", plain);
    return 0;
}

输入格式
密文(小写字母) 密钥(任意整数)

输出格式
明文(小写字母)

输入样例1
c 5
输出样例1
x
输入样例2
y -3
输出样例2
b

我们从题目的要求可以得到,答案应该大致是如下:

plain=secret-key%26;
if(plain<'a') plain+=26;
if(plain>'z') plain-=26; 

我之前也是这么想的,本地测试也是刚好对应,但代码提交上去后是错误的,检查了一番后发现,题目是代码填空题,并且只给了一行,而我写的代码有足足三行,编译器无法通过,思考了一番,想到了三目运算符,于是有了以下代码:

plain = (secret - key % 26 < 'a') ? ((secret - key % 26) + 26) : (((secret - key % 26) > 'z') ? ((secret - key % 26) - 26) : secret - key % 26);

提交后,一次AC,而这道题也是比较典型的,三目运算符的一种运用。
总的来说: 三目运算符有他的特殊使用途径,有些题目,三木运算符的使用,确确实实能起到事半功倍的效果,也希望写的这些能帮到同学们。

猜你喜欢

转载自blog.csdn.net/qq_19265749/article/details/102985918