那为什么之前使用的那个不行
时间: 2023-07-20 13:13:05 浏览: 47
之前的那个三元运算符的写法是这样的:
```
smap.get(sc[right]) == null ? smap.put(sc[right],1) : smap.put(sc[right],smap.get(sc[right])+1);
```
这个三元运算符的条件判断部分是 `smap.get(sc[right]) == null`,如果这个条件成立,就执行 `smap.put(sc[right], 1)`,否则执行 `smap.put(sc[right], smap.get(sc[right]) + 1)`。
问题在于,这两个表达式之间没有用分号进行分隔,所以编译器会将它们看作一个整体,而不是两个语句。因此,编译器会认为这个三元运算符不是一个有效的语句,从而报错。
实际上,只要在这两个表达式之间添加一个分号,就可以避免这个问题。也就是说,以下代码是可以正常工作的:
```
smap.get(sc[right]) == null ? smap.put(sc[right],1) : smap.put(sc[right],smap.get(sc[right])+1);
```
但是,这种写法不太易读,并且容易出现错误。因此,建议还是采用 if-else 语句或者正确的三元运算符写法来代替这个代码片段。
相关问题
shell脚本中i++为什么不行
在Shell脚本中,`i++` 是一种常见的自增运算符用法,用于将变量 `i` 的值增加1。然而,Shell中的语法有所不同,不能直接使用 `i++`。
在Shell脚本中,可以使用以下两种方式实现变量的自增操作:
1. 使用`let`命令:
```shell
let "i++"
```
2. 使用`(( ))`括号:
```shell
((i++))
```
这两种方式都可以对变量 `i` 进行自增操作,并将结果保存在 `i` 中。
此外,还有其他一些方式可以实现自增操作,例如使用`expr`命令或使用算术扩展 `$(( ))`。具体使用哪种方式取决于您的需求和个人偏好。
需要注意的是,在Shell脚本中,变量的自增操作与其他编程语言(如C或Java)中的自增操作略有不同。在Shell中,变量默认被视为字符串,而不是数字。因此,在自增操作之前,需要确保将变量初始化为一个数字值,否则会出现意外结果。
例如,在脚本中使用 `i=0` 来初始化变量 `i`,然后使用 `let "i++"` 或 `((i++))` 来进行自增操作。这样就能够正确地对变量进行自增。
在 Oracle 数据库的连接 URL 中,使用 : 不行必须使用/ 为什么
实际上,在 Oracle 数据库连接 URL 中,使用 : 或 / 都可以分隔主机名和端口号以及 SID,两种方式都是支持的,没有绝对的优劣之分。只是在使用 : 分隔主机名和端口号时,在 SID 之前需要再加上一个 :,而在使用 / 分隔主机名和端口号时,在 SID 之前需要再加上一个 /,这是需要注意的。例如:
```
jdbc:oracle:thin:@hostname:port:sid
jdbc:oracle:thin:@//hostname:port/sid
```
这两个连接 URL 都是有效的,只是分隔符不同而已。在 Spring Boot 中,可以根据自己的习惯和实际需要选择使用哪种方式。