将方法中的数据类型应用于主测试器中的变量时出错 class
Error with applying data type in method to variables in main tester class
我怎样才能得到这个来计算双精度数组的属性。如果其他所有东西都是一个 int 内部,那仍然是一个双打数组吗?还是由于方法类型,它仍然是一个双精度数组?这是我的 class。非常感谢!
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;
}
}
这是我的主要方法。
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
有两个错误:
首先:当您执行此操作时 - test.findMin(num)
您正在尝试传递参数 num。但是 num 不是数组!这是一个数字。你可能想这样做:test.findMin(array)
其次:您可以将整数隐式转换为双精度,因为您可以确保它保持不变。但是您不能将 double 隐式转换为整数,因为您不能将例如 2,7 转换为整数。对于数组,即使 "implicit" 转换也不起作用。
适合您的解决方案,将这一行 double array[] = new double[num];
更改为 int array[] = new int[num];
,然后将所有看起来像 test.findMin(num)
的参数更改为 test.findMin(array)
对于双打,这将编译(不知道它是否按预期工作):
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;
}
}
我怎样才能得到这个来计算双精度数组的属性。如果其他所有东西都是一个 int 内部,那仍然是一个双打数组吗?还是由于方法类型,它仍然是一个双精度数组?这是我的 class。非常感谢!
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;
}
}
这是我的主要方法。
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
有两个错误:
首先:当您执行此操作时 - test.findMin(num)
您正在尝试传递参数 num。但是 num 不是数组!这是一个数字。你可能想这样做:test.findMin(array)
其次:您可以将整数隐式转换为双精度,因为您可以确保它保持不变。但是您不能将 double 隐式转换为整数,因为您不能将例如 2,7 转换为整数。对于数组,即使 "implicit" 转换也不起作用。
适合您的解决方案,将这一行 double array[] = new double[num];
更改为 int array[] = new int[num];
,然后将所有看起来像 test.findMin(num)
的参数更改为 test.findMin(array)
对于双打,这将编译(不知道它是否按预期工作):
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;
}
}