首页 > 解决方案 > 为什么我的方法没有返回任何东西?

问题描述

我编写了这段代码来对字符数组、整数和双精度数进行一些计算。

static char minimum(char array[])
{   
    char min = 'z';
    int n = array.length;
    
  
    for (int i = 0; i < n-1; i++)
    {
        if (array[i] < min)
        {
            min = array[i];
        }
    }
   
    
    return min;
}

static int minimum(int array[])
{
    Arrays.sort(array);  
    return array[0];
}

static double minimum(double array[])
{
    int n = array.length;
    Arrays.sort(array);  
    return array[0
                 ];
}

static char maximum(char array[])
{
    
    char max = 'z';
    int n = array.length;
    
    
    for (int i = 0; i < n-1; i++)
        if (array[i] > max)
        {
            max = array[i];
        }
   
    
    return max;
}

static int maximum(int array[])
{
    int n = array.length;
    Arrays.sort(array);  
    return array[n - 1];
}

static double maximum(double array[])
{
    int n = array.length;
    Arrays.sort(array);  
    return array[n - 1];
}

static int minimumat(char array[])
{
    
    char min = 'z';
    int n = array.length;
    int minat = 0;
    

    for (int i = 0; i < n-1; i++)
    {
        if (array[i] < min)
        {
            min = array[i];
        }
    }
    
    
    for (int i = 0; i < n; i++)
    {
        if (array[i] == min)
        {
            i = minat;
        }
    }
   
    
    return minat;
}

static int minimumat(int array[])
{
    int n = array.length;
    int newarray[] = array;
    Arrays.sort(newarray);  
    int min = newarray[0];
    int minat = 0;
    for(int i = 0; i <= n; i++)
    {
        if(array[i] == min)
        {
            minat = i;
        }
    }
    return minat;
}

static int minimumat(double array[])
{
    int n = array.length;
    double newarray[] = array;
    Arrays.sort(newarray);  
    double min = newarray[0];
    int minat = 0;
    for(int i = 0; i <= n; i++)
    {
        if(array[i] == min)
        {
            minat = i;
        }
    }
    return minat;
}

static int maximumat(char array[])
{
    
    char max = 'A';
    int n = array.length;
    int maxat = 0;
    
    
    for (int i = 0; i < n; i++)
    {
        if (array[i] > max)
        {
            max = array[i];
        }
    }
    
    
    for (int i = 0; i < n; i++)
    {
        if (array[i] == max)
        {
            i = maxat;
        }
    }
   
    
    return maxat;
}

static int maximumat(int array[])
{
    int n = array.length;
    int newarray[] = array;
    Arrays.sort(newarray);  
    int max = newarray[0];
    int maxat = 0;
    for(int i = 0; i <= n; i++)
    {
        if(array[i] == max)
        {
            maxat = i;
        }
    }
    return maxat;
}

static int maximumat(double array[])
{
    int n = array.length;
    double newarray[] = array;
    Arrays.sort(newarray);  
    double max = newarray[n - 1];
    int maxat = 0;
    for(int i = 0; i <= n; i++)
    {
        if(array[i] == max)
        {
            maxat = i;
        }
    }
    return maxat;
}

static double average(int array[])
{
    
    int sum = 0;
    int n = array.length;
   
    
    for (int i = 0; i < array.length; i++)
    {
       sum +=  array[i];
    }
    
    double avg = sum / n;
    
    return avg;
}

static double average(double array[])
{
    
    double sum = 0;
    int n = array.length;
   
    
    for (int i = 0; i < array.length; i++)
    {
       sum += array[i];
    }
    
    double avg = sum / n;
    
    return avg;
}

我还编写了一些简单的代码来在另一个类中测试这些方法。

public static void main(String[] args)
    {
    char[] charArray = {'k', 'p', 'f', 'r', 'D', 'm'};
    double doubleArray[] = {5.43, 9.81, 5.37, 7.19, 2.86, 6.55, 2.37, 7.28};
    int intArray[] = {40, 7, 53, 34, 61, 70, 29, 49};

    ArrayTools ArrayTools = new ArrayTools();
    System.out.println(ArrayTools.minimum(charArray));
    
    
    System.out.println(ArrayTools.minimum(doubleArray));
    
    
    System.out.println(ArrayTools.minimum(intArray));
    
    
    System.out.println(ArrayTools.maximum(charArray));
    
    
    System.out.println(ArrayTools.maximum(doubleArray));
    
    
    System.out.println(ArrayTools.maximum(intArray));
    
    
    System.out.println(ArrayTools.minimumat(charArray));
    
    
    System.out.println(ArrayTools.minimumat(doubleArray));
    
    
    System.out.println(ArrayTools.minimumat(intArray));
    
    
    System.out.println(ArrayTools.maximumat(charArray));
    
    
    System.out.println(ArrayTools.maximumat(doubleArray));
    
    
    System.out.println(ArrayTools.maximumat(intArray));
    
    
    System.out.println(ArrayTools.average(intArray));
    
    
    System.out.println(ArrayTools.average(doubleArray));
}

}

该代码已在“最小”和“最大”方法中正常工作(不要与“最小”和“最大”方法混淆)。但其余的没有打印任何东西。

这是输出:

D 

2.37 

7 

z 

9.81 

70

标签: javaarraysmethods

解决方案


我在您的代码中看到的两个问题是-

1 - 在static int minimumat(char array[])方法中,您正在重置 i 的值。它应该是

minat = i;

和其他方法中的类似 maxat - maxat()

2-您正在从 0 循环到长度 (n),因此您可能会在最后一个索引上获得 ArrayIndexOutOfBound,因此排除最后一个。它应该是

for(int i = 0; i < n; i++) {

推荐阅读