Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将方法中的数据类型应用于主tester类中的变量时出错_Java_Arrays_Methods_Statistics - Fatal编程技术网

Java 将方法中的数据类型应用于主tester类中的变量时出错

Java 将方法中的数据类型应用于主tester类中的变量时出错,java,arrays,methods,statistics,Java,Arrays,Methods,Statistics,我怎样才能得到它来计算关于double数组的属性呢。如果里面的其他东西都是int,那它还会是一个双精度数组吗?还是因为方法类型的原因,它仍然是一个双精度数组?这是我的班级。非常感谢 import java.util.*; import java.lang.Math; public class Statistics { private double min; private double max; private double mean; private doub

我怎样才能得到它来计算关于double数组的属性呢。如果里面的其他东西都是int,那它还会是一个双精度数组吗?还是因为方法类型的原因,它仍然是一个双精度数组?这是我的班级。非常感谢

import java.util.*;
import java.lang.Math;

public class Statistics {
    private double min;
    private double max;
    private double mean;
    private double median;
    private double deviation;
    private double mode;

public static double findMin(int[] array){
         int min = array[0];  
         for(int i=1;i<array.length;i++){  
         if(array[i] < min){  
         min = array[i];  
            }  
         }  
        return min;  

    }

public static double findMax(int[] array){
        int max = array[0];
        for(int i=1;i<array.length;i++){
            if(array[i]>max){
                max=array[i];
            }
        }
        return max;

    }

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

public static double calcMedian(int[] n){
    int middle = n.length/2;
    if (n.length%2==1){
        return n[middle];
    } else {
        return (n[middle]+n[middle])/2;
    }
}

public static double calcDeviation(int[] n){
    int mean = (int)calcMean(n);
    int squareSum = 0;

    for (int i = 0; i < n.length; i++) {
    squareSum += Math.pow(n[i] - mean, 2);
    }   
    return Math.sqrt((squareSum) / (n.length - 1));

}

public static double calcMode(int n[]){
    int value=0; int max=0;

    for (int i=0;i<n.length;++i){
        int count=0;
        for (int j=0; j<n.length; ++j){
            if (n[j]==n[i]) ++count;
        }
        if (count>max){
            max=count;
            value=n[i];

        }
    }

    return value;
}


}
有两个错误:

第一:执行此操作时-
test.findMin(num)
您试图传递参数num,但num不是数组!这是一个数字。您可能需要这样做:
test.findMin(数组)

第二:您可以隐式地将integer转换为double,因为您可以确保它保持不变。但是不能隐式地将double转换为整数,因为不能将例如2,7转换为整数。对于数组,即使是“隐式”转换也不起作用


对于您的解决方案,更改此行
double array[]=new double[num]
int数组[]=新的int[num]
然后将所有类似于test.findMin(num)
的参数更改为test.findMin(array)


对于使用Double,这将编译(不知道它是否按预期工作):

import java.util.*;
公共类统计测试器{
公共静态void main(字符串[]args){
统计测试=新统计();
扫描仪输入=新扫描仪(System.in);
//读取用户输入。
System.out.print(“您想输入多少个数字?”:”;
int num=input.nextInt();
双数组[]=新的双数组[num];
System.out.println(“立即输入“+num+”数字”);
for(int i=0;i

import java.util.*;
导入java.lang.Math;
公共课统计{
私人双敏;
私人双最大值;
私人双平均;
私人双中位数;
私人双重背离;
私人双模式;
公共静态双findMin(双[]数组){
双最小值=数组[0];
for(int i=1;imax){
max=数组[i];
}
}
返回最大值;
}
公共静态双计算平均值(双[]n){
整数和=0;
for(int i=0;i最大值){
最大值=计数;
数值=n[i];
}
}
返回值;
}
}

将整数传递给只接受数组的方法。别那么做,看来你的论点打错了。您可能想使用
array
而不是
num
您的方法都采用
int[]
s。您有一个
double[]
,因此无法将其传递给任何这些方法,因为它不是
int[]
。感谢您的帮助!数组只接受整数是真的吗?我尝试在我的方法中使用double,其余的参数使用double。它不起作用。我得到了所有“可能的精度损失”错误。@Lorber是的,这是可能的。非常感谢你的帮助,@libik!我尝试了您的所有更改,但仍然存在这些错误。java:16:发现可能的精度损失:需要加倍:int数组[]=new int[num];^java:20:发现可能的精度损失:需要加倍:int数组[i]=input.nextDouble()@Lorber-看起来你有
input.nextDouble()
在那里,只要把它改成
input.nextInt()
(只需每改一次整数)好的,我改了。现在一切都正常了,你真是太棒了,但即使我只能输入整数,这算是一个双倍数组吗?或者double数组只意味着计算结果,而不一定是我可以在数组中输入的数字吗?如果某个东西是double类型的,那么您输入的所有内容都保存为double,并计算为double。没有“我是怎么得到这个数字的”或“这个双精度也是整数”的记忆。所以,即使你“知道”你不能把任何非整数放入双变量中,编译器也不知道。我感谢你的回答,libik。在我做了你的编辑之后,我被要求输入我想要输入的数字,如果我输入一个双精度的,我会得到这个错误
import java.util.*;

public class StatisticsTester {

public static void main(String[] args) {


    Statistics test = new Statistics();
    Scanner input = new Scanner(System.in);
    //Read user  input.
    System.out.print("How many numbers do you want to enter?: ");
    int num = input.nextInt();
    double array[] = new double[num];
    System.out.println("Enter the " + num + "numbers now.");
    for (int i = 0; i < array.length; i++ )
    {
        array[i] = input.nextInt();
    }
    System.out.print("Here is the minimum, ");
    System.out.print("maximum, mean, median, ");
    System.out.println("mode, and standard deviation: ");
    System.out.print(test.findMin(num) +", " + test.findMax(num));
    System.out.print(", "+ test.calcMean(num) +", ");
    System.out.print(test.calcMedian(num) +", ");
    System.out.print(test.calcMode(num) +", ");
    System.out.print(test.calcDeviation(num));

}
}
StatisticsTester.java:25: findMin(int[]) in Statistics cannot be applied to (int)
    System.out.print(test.findMin(num) +", " + test.findMax(num));
                         ^
StatisticsTester.java:25: findMax(int[]) in Statistics cannot be applied to (int)
    System.out.print(test.findMin(num) +", " + test.findMax(num));
                                                   ^
StatisticsTester.java:26: calcMean(int[]) in Statistics cannot be applied to (int)
    System.out.print(", "+ test.calcMean(num) +", ");
                               ^
StatisticsTester.java:27: calcMedian(int[]) in Statistics cannot be applied to (int)
    System.out.print(test.calcMedian(num) +", ");
                         ^
StatisticsTester.java:28: calcMode(int[]) in Statistics cannot be applied to (int)
    System.out.print(test.calcMode(num) +", ");
                         ^
StatisticsTester.java:29: calcDeviation(int[]) in Statistics cannot be applied to (int)
    System.out.print(test.calcDeviation(num));
                         ^
6 errors
import java.util.*;

public class StatisticsTester {

    public static void main(String[] args) {

        Statistics test = new Statistics();
        Scanner input = new Scanner(System.in);
        //Read user  input.
        System.out.print("How many numbers do you want to enter?: ");
        int num = input.nextInt();
        double array[] = new double[num];
        System.out.println("Enter the " + num + "numbers now.");
        for (int i = 0; i < array.length; i++) {
            array[i] = input.nextDouble();
        }
        System.out.print("Here is the minimum, ");
        System.out.print("maximum, mean, median, ");
        System.out.println("mode, and standard deviation: ");
        System.out.print(test.findMin(array) + ", " + test.findMax(array));
        System.out.print(", " + test.calcMean(array) + ", ");
        System.out.print(test.calcMedian(array) + ", ");
        System.out.print(test.calcMode(array) + ", ");
        System.out.print(test.calcDeviation(array));

    }
}
import java.util.*;
import java.lang.Math;

public class Statistics {

    private double min;
    private double max;
    private double mean;
    private double median;
    private double deviation;
    private double mode;

    public static double findMin(double[] array) {
        double min = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] < min) {
                min = array[i];
            }
        }
        return min;

    }

    public static double findMax(double[] array) {
        double max = array[0];
        for (int i = 1; i < array.length; i++) {
            if (array[i] > max) {
                max = array[i];
            }
        }
        return max;

    }

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

    public static double calcMedian(double[] n) {
        int middle = n.length / 2;
        if (n.length % 2 == 1) {
            return n[middle];
        } else {
            return (n[middle] + n[middle]) / 2;
        }
    }

    public static double calcDeviation(double[] n) {
        int mean = (int) calcMean(n);
        int squareSum = 0;

        for (int i = 0; i < n.length; i++) {
            squareSum += Math.pow(n[i] - mean, 2);
        }
        return Math.sqrt((squareSum) / (n.length - 1));

    }

    public static double calcMode(double n[]) {
        double value = 0;
        int max = 0;

        for (int i = 0; i < n.length; ++i) {
            int count = 0;
            for (int j = 0; j < n.length; ++j) {
                if (n[j] == n[i]) {
                    ++count;
                }
            }
            if (count > max) {
                max = count;
                value = n[i];

            }
        }

        return value;
    }
}