java判断符,直接跳异常了

我将判断写了不为空之后,下来到再去数据库,判断,是否已经存在,到这里时,它就直接跳到异常了呢?
这里边的userId是有数据的,就是在第一行判断时,有userId,songId为空,那我用|,就是有一个为真,这一个是下面第三行的albumId有值,也有userId,就应该进来了呀,它为什么在第一步就跳到异常了呢?

img

img

第三项为假,整个逻辑值就为假

进了第一个if?



```java
 String userId="123";
       String songId="";
        int i = Integer.parseInt(userId);
        int i1 = Integer.parseInt(songId);
        System.out.println(i);
        System.out.println(i1);

```

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at com.csdn.Test.main(Test.java:12)

你的Integer.parseInt(songId);就直接报错了 不可以传空的字符串.NumberFormatException转换错误了

你现在报错是因为Integer.parseInt(songId)这行代码,因为songId为“”,转不了数字。

1、根据你的代码,我理解的需求是,如果 songId、songListId、albumId、voiceId同时为空的时候,返回“收藏为空”,
2、只要 songId、songListId、albumId、voiceId有一个部位空,返回“歌曲已收藏”,
你的是运算符的问题,你把所有的“|” 换成 “||”就可以了
另外,你需要对 songId、songListId、albumId、voiceId进行单个判空,
否则Integer.parseInt()的时候会报错。

改造下代码吧.这个==null 和.equals("") 那如果为 " "呢, 使用hutool工具类.Strutil.isBlank()