黑马程序员技术交流社区

标题: <已解决>三元运算符的一个小问题啊 [打印本页]

作者: 11415545    时间: 2012-6-9 19:28
标题: <已解决>三元运算符的一个小问题啊
本帖最后由 11415545 于 2012-6-9 21:22 编辑

  
我是一天JAVA学习基础的孩纸。  
今天学习了毕向东老师讲的“基础视频教程第02天”中的所有视频课程内容。
在第十七讲中,
         b=(a>1)? System.out.println("haha"):200; //直接打印haha到屏幕,没有数值给b
  这句代码怎样改都不能实现。提示“? ”出错了。我将“? ”换成"?"也不行。
  如果是用if、else代码就能实现
  if(a>1)
  System.out.println("haha");
else
  b=200;
  如果我想用一行代码,三元运算符执行并且能够实现我想打印的文字。怎样做。
忘了贴上编辑器的赋值语句。语句是这样的。
int a=9,b;
b=(a>1)?100:200;
if(a>1)
  b=100;
else
  b=200;//如果只是一句代码,则不需{}
//如果a>1b=100,否则b=200。
/*
if else 结构 简写格式: 变量=(条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算玩必须要有一个结果。
*/
b=(a>1)? System.out.println("haha"):200; //错的不能执行。
欢迎大家访问我的日记:http://htm321.blog.163.com/

作者: 黑马-王言龙    时间: 2012-6-9 19:37
本帖最后由 wyl530274554 于 2012-6-9 20:30 编辑

b=(a>1)? System.out.println("haha"):200;    //这是你的代码,没加注释,不好意思{:soso_e110:}
三元运算符 必须有结果
就是b最终必须有个值,而不能是输出语句。

试试这样
  1. public class Demo{
  2.         public static void main(String args[]){
  3.                 int a = 3;
  4.                 System.out.println((a>1)?"haha":200);
  5.         }
  6. }
复制代码

作者: 付信榕    时间: 2012-6-9 19:39
b=(a>1)? System.out.println("haha"):200
?:三元运算符中必须有确定的返回值。 System.out.println("haha")无返回值,所以就会出错了。毕老师说的,?:有简化书写的好处,但也有局限性,就是要有返回值,有利就有弊。
作者: 潘东升    时间: 2012-6-9 20:15
哈哈,b都没有声明类型
作者: 11415545    时间: 2012-6-9 20:20
wyl530274554 发表于 2012-6-9 19:37
b=(a>1)? System.out.println("haha"):200;
三元运算符 必须有结果
就是b最终必须有个值,而不能是输出语 ...

大哥,你的这句代码也不能执行。
作者: 11415545    时间: 2012-6-9 20:22
付信榕 发表于 2012-6-9 19:39
b=(a>1)? System.out.println("haha"):200
?:三元运算符中必须有确定的返回值。 System.out.println("hah ...


哦。原来如此。难怪我怎么改,改来改去。结果。还是不能执行。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2