黑马程序员技术交流社区
标题:
关于三元运算符
[打印本页]
作者:
孙浩
时间:
2012-11-24 00:32
标题:
关于三元运算符
本帖最后由 孙浩 于 2012-11-25 13:47 编辑
/*题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
1.程序分析:(a> b)?a:b这是条件运算符的基本例子。
*/
请各位指点下面的代码错在哪里?求解?
class Test5
{
public static void main (String [] args)
{
int score=67 ;
char grade;
grade = score>=90?grade='A':score>60?grade='B':grade='C';
System.out.println(grade);
}
}
作者:
蔡兆军
时间:
2012-11-24 00:58
本帖最后由 蔡兆军 于 2012-11-24 01:00 编辑
应该是这么写 grade = (score>=90?'A':score>60?'B':'C'));
?后面是判断完后是 应该取的值,不是赋值给grade。
作者:
张海涛
时间:
2012-11-24 01:32
你在三元表达式前面已经写了grade了,三元表达式会将运算结果赋值给grade,在表达式内部就不必写grade了,代码应该为:
grade = score<60?'C':score<90?'B':'A';
楼上说的也对,不过后面多了个“)”。
作者:
奋斗的青春
时间:
2012-11-24 01:40
package com.itheima.operator;
public class TernaryOperatorDemo {
/**
* 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(a>
* b)?a:b这是条件运算符的基本例子。
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int score = 67;
char grade;
// grade = score>=90?grade='A':score>60?grade='B':grade='C';
// grade =(Character) (score>=90?grade='A':score>60:grade='B':grade='C');
grade = score>=90?'A':(score>60?'B':'C'); //三元运算符的嵌套 ,即为分区间判断
System.out.println(grade);
}
}
复制代码
作者:
马良
时间:
2012-11-24 08:36
三元运算符相当于是简化了if else判断语句,在你的这个例子里返回的应该是一个值,而不是一个赋值语句,所以,既然你的语句前面既然加了grade=来接收三元运算符判断的结果,那“?”后面的应该就是一个值,而不能是一个赋值语句。
作者:
王阳
时间:
2012-11-24 10:16
int score=67 ;
char grade;
grade = score>=90?'A':score>60?'B':'C';
System.out.println(grade);
改成这样应该可以了
作者:
孙浩
时间:
2012-11-24 13:14
本帖最后由 孙浩 于 2012-11-24 16:50 编辑
grade = score>=90?grade='A':score>60?grade='B':grade='C';
这句话错在哪里我明白了,是因为:
在三元表达式前面已经写了grade了,三元表达式会将运算结果赋值给grade,在表达式内部就不必写grade了!
但是下面这句
为什么编译不通过
,?:表达式不是相当于if else吗
score>=90?grade ='A':grade='B';
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2