indexOf

jyl_ls 2018-10-19 04:44:40
s.indexOf(a1)<0?:sum+=4; 这一行提示: 非法的表达式开始 s和a1都是字符串 请问这是什么原因?
...全文
509 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
亲爱的Joe 2018-10-23
  • 打赏
  • 举报
回复
三元表达式写错了
枫舞蝶刺 2018-10-23
  • 打赏
  • 举报
回复
引用 10 楼 weixin_39646155 的回复:
[quote=引用 9 楼 qq_40224672 的回复:]
[quote=引用 8 楼 weixin_39646155 的回复:]
[quote=引用 7 楼 qq_40224672 的回复:]
[quote=引用 6 楼 weixin_39646155 的回复:]
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。

sum=s.indexOf(a1)<0?sum+=0:sum+4; 请教一下 为什么这样也可以[/quote]
结果来说是一样的, 你可以看成 sum = sum + x; 和 sum = sum += x; 区别就是后者多赋了一次值[/quote]
但是如果冒号后面是这样就不行 sum=s.indexOf(a1)<0?sum+=0:sum+=4; 这样会报错[/quote]
应该是优先级问题,你把表达式加上括号就可以了s.indexOf(a1) < 0 ? (sum += 0) : (sum += 4)[/quote]
G.Jagger 2018-10-23
  • 打赏
  • 举报
回复
引用 9 楼 qq_40224672 的回复:
[quote=引用 8 楼 weixin_39646155 的回复:]
[quote=引用 7 楼 qq_40224672 的回复:]
[quote=引用 6 楼 weixin_39646155 的回复:]
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。

sum=s.indexOf(a1)<0?sum+=0:sum+4; 请教一下 为什么这样也可以[/quote]
结果来说是一样的, 你可以看成 sum = sum + x; 和 sum = sum += x; 区别就是后者多赋了一次值[/quote]
但是如果冒号后面是这样就不行 sum=s.indexOf(a1)<0?sum+=0:sum+=4; 这样会报错[/quote]
应该是优先级问题,你把表达式加上括号就可以了s.indexOf(a1) < 0 ? (sum += 0) : (sum += 4)
枫舞蝶刺 2018-10-23
  • 打赏
  • 举报
回复
引用 8 楼 weixin_39646155 的回复:
[quote=引用 7 楼 qq_40224672 的回复:]
[quote=引用 6 楼 weixin_39646155 的回复:]
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。

sum=s.indexOf(a1)<0?sum+=0:sum+4; 请教一下 为什么这样也可以[/quote]
结果来说是一样的, 你可以看成 sum = sum + x; 和 sum = sum += x; 区别就是后者多赋了一次值[/quote]
但是如果冒号后面是这样就不行 sum=s.indexOf(a1)<0?sum+=0:sum+=4; 这样会报错
G.Jagger 2018-10-23
  • 打赏
  • 举报
回复
引用 7 楼 qq_40224672 的回复:
[quote=引用 6 楼 weixin_39646155 的回复:]
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。

sum=s.indexOf(a1)<0?sum+=0:sum+4; 请教一下 为什么这样也可以[/quote]
结果来说是一样的, 你可以看成 sum = sum + x; 和 sum = sum += x; 区别就是后者多赋了一次值
枫舞蝶刺 2018-10-23
  • 打赏
  • 举报
回复
引用 6 楼 weixin_39646155 的回复:
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。

sum=s.indexOf(a1)<0?sum+=0:sum+4; 请教一下 为什么这样也可以
G.Jagger 2018-10-22
  • 打赏
  • 举报
回复
三元表达式最后是要返回一个值的, 你只有表达式,缺少变量来接受值。
改成 sum = s.indexOf(a1) < 0 ? sum + 0 : sum + 4;
或者把整个表达式当成值使用。
ooo-ooo 2018-10-22
  • 打赏
  • 举报
回复
?: 相当于 if和else,你的 ? 之后要有操作才能接 :
qq_32427077 2018-10-22
  • 打赏
  • 举报
回复
String x=s.indexOf(a1)<0?:sum+4;
jyl_ls 2018-10-19
  • 打赏
  • 举报
回复
加了sum+=0,又报错: unexpected type
  • 打赏
  • 举报
回复
s.indexOf(a1)<0?:sum+=4;

s.indexOf(a1)<0? 缺少表达式 :sum+=4;
  • 打赏
  • 举报
回复
a? result1:result2

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧