【问题标题】:error: incompatible types: boolean cannot be converted to List<String>错误:不兼容的类型:布尔值无法转换为 List<String>
【发布时间】:2019-07-07 14:56:00
【问题描述】:

我收到以下错误。 第 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;

  }
}

【问题讨论】:

  • 导致此错误的“第 15 行”是哪一行?

标签: java


【解决方案1】:

你在做return res.add(...);,而add方法返回一个布尔值(其实我只是出于好奇查了一下,好像总是返回true)。

如果您想返回列表,只需执行以下操作:

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

【讨论】:

    【解决方案2】:

    您的方法类型返回 List 但当您调用 res.add 时,您不会返回列表 - 相反,您会返回值“true”,因为根据文档,这是添加到列表中的返回值。 https://docs.oracle.com/javase/7/docs/api/java/util/List.html#add(E)

    【讨论】:

      【解决方案3】:

      List.add() 返回一个布尔值。

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

      由于您返回的是res.add(),它正在从函数中返回boolean。但是,您的函数定义说将返回类型定义为List&lt;String&gt;。因此,错误。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 1970-01-01
        • 2018-10-28
        • 1970-01-01
        • 1970-01-01
        • 2021-04-27
        • 1970-01-01
        相关资源
        最近更新 更多