【问题标题】:Type mismatch: cannot convert from double [] to int []类型不匹配:无法从 double [] 转换为 int []
【发布时间】:2025-11-29 13:35:01
【问题描述】:

我试图让该方法返回由 for 循环创建的新数组。

import java.util.Arrays;
public class stocks {

public static void main(String[] args) {

    double stockV [] = {55.6, 63.2, 68.1, 70.1, 72.4, 73.9, 71.5, 68.3, 67.1, 66.2}; 
    double isOverprices [] = overpriced(stockV);

}
    public int [] overpriced(double[] rsiValues)
    {
        for (int i = 0; i < rsiValues.length; i++)
        {
            if (rsiValues[i] > 70)
            {
                rsiValues[i] = 1;
            }
            else if (rsiValues[i] <= 70)
            {
                rsiValues[i] = 0;
            }
            return rsiValues;
        }
    }
 }

【问题讨论】:

    标签: java arrays class for-loop methods


    【解决方案1】:

    改成

    public double[] overpriced(double[] rsiValues)
    

    你显然是在返回你传递给方法的东西,那么为什么你认为它的种类会改变呢?

    另外,您希望在for 循环结束后返回值。

    for (int i = 0; i < rsiValues.length; i++)
    {
        if (rsiValues[i] > 70)
        {
            rsiValues[i] = 1;
        }
        else if (rsiValues[i] <= 70)
        {
            rsiValues[i] = 0;
        }
    
    }
    return rsiValues;
    

    【讨论】:

    • 我的目标是将 70 以上的任何值变为 1,将 70 或更少的值变为 0。我正在尝试创建一个新数组来保存新值并显示数组
    • 创建一个新的提示数组来保存值。也许布尔值会更好。
    【解决方案2】:
    1. 将“静态”添加到定价过高的方法签名中。
    2. 价格过高的方法应该返回一个整数数组,但您返回的是一个双精度数组。
    3. 将 return 语句放在 for 循环之外。
    4. 在 main 方法中,将 isOverprices 更改为 int 数组
      public static void main(String[] args) {
        double stockV [] = {55.6, 63.2, 68.1, 70.1, 72.4, 73.9, 71.5, 68.3, 67.1, 66.2}; 
        int isOverprices [] = overpriced(stockV);
        for(int i: isOverprices) {
          System.out.println(i);
        }
      }
      public static int [] overpriced(double[] rsiValues){
        int result [] = new int[rsiValues.length];
        for (int i = 0; i < rsiValues.length; i++)
        {
          if (rsiValues[i] > 70)
          {
              result[i] = 1;
          }
          else if (rsiValues[i] <= 70)
          {
              result[i] = 0;
          }
        }
        return result;
      }
    

    【讨论】: