当前位置: 代码迷 >> java >> 错误:类型不兼容:布尔值无法转换为列表
  详细解决方案

错误:类型不兼容:布尔值无法转换为列表

热度:30   发布时间:2023-07-31 11:25:01.0

我收到以下错误。 第15行:错误:不兼容的类型:布尔值不能转换为列表integer.toString()返回一个字符串实例,我将其添加到字符串列表中。 为什么给布尔值不能转换为错误。 因为返回值是字符串,而我要添加的值也是一个字符串。

在这里输入代码

class Solution {
  public List<String> findMissingRanges(int[] nums, int lower, int upper) 
  {
    List<String> res=new ArrayList<String>();
    if(nums.length==0
    {
        if(upper-lower==2)
        {
            //String a=Integer.toString(lower+1);
            //res.add(a);
            res.add(Integer.toString(123));
        }
        else if(upper-lower>2)
        {

            return res.add(Integer.toString(lower)+">"+Integer.toString(upper));
         }   
    }

    int r=upper;
    boolean flag=false;
    for(int i=0;i<nums.length;i++)
    {

        if(i==0 && nums[i]-lower>=2 && res.size()==0)
        {
            upper=nums[i];
            flag=true;
        }
        else if(i!=nums.length-1)
        {
            upper=nums[i+1];
            lower=nums[i];
        }
        if(i==nums.length-1)
        {
            lower=nums[i];
            upper=r;
        }
        if(upper-lower==2)
        {
            //int temp=lower+1;
            Integer temp=new Integer(lower+1);
            res.add(temp.toString());
            if(i==0 && flag==true)
            {
                i--;
                flag=false;
            }
        }
        else if(upper-lower>2)
        {
            int a=lower+1;
            if(i==0 && flag==true)
            {
                i--;
                a=lower;
                flag=false;    
            }
            int b=(i==nums.length-1)?upper:upper-1;
            String subRes=a+"->"+b;
            res.add(subRes);


        }

    }
    return res;

  }
}

您正在做return res.add(...); ,并且add方法返回一个布尔值(实际上,我只是出于好奇而已,它似乎总是返回true )。

如果要返回列表,请执行以下操作:

res.add(...);
return res;

返回一个布尔值。

如果此集合由于调用而更改,则返回true

因为您要返回res.add() ,所以它要从函数返回boolean 但是,您的函数定义说将返回类型定义为List<String> 因此,错误。

您应该在函数末尾返回列表。

public List<String> findMissingRanges(int[] nums, int lower, int upper) 
{
    List<String> res=new ArrayList<String>();
    //Do operations on res
    return res;
}

您的方法类型返回List但是当您调用res.add您没有返回列表-而是返回值'true',因为根据文档,这就是添加到列表中的返回值。

  相关解决方案