创建接受数组输入的参数

时间:2017-01-22 20:33:10

标签: java arrays user-input

我正在练习制作数组。我创建了两个类。第一个类(Processor类)包含一个参数,该参数接受用户输入的10个值的数组。它还包含4种处理方法:输入的数字的平均值,最大值,最小值和toString方法。这个类编译没有错误。

import java.util.Arrays;

public class Processor {
    public int[] value;
    int aSum = 0;
    int largest = value[0];
    int smallest = value[0];
    private int number;

    public Processor() {
        int[] numbers = new int[10];
    }

    public void arrayAverage(int[] value) {
        double average = 0;
        for (int i = 0; i < value.length; i++) {
            aSum = aSum + value[i];
            average = aSum / value.length;
        }
    }

    public void arrayMax() {
        for (int i = 1; i < value.length; i++) {
            if (value[i] > largest) {
                largest = value[i];
            }
        }
    }

    public void arrayMin() {
        for (int i = 1; i < value.length; i++) {
            if (value[i] < smallest) {
                smallest = value[i];
            }
        }
    }

    public String toString() {
        return Arrays.toString(value);
    }
}

第二个类ProcessorTester创建一个Processor实例,并要求用户输入10个数组值。然后我从第一个类调用方法并打印它们的值。但是,当我编译这个类时,我收到以下错误:&#34; incompatible type- int cannot be converted to Processor&#34;。

import java.util.Scanner;

public class ProcessorTester {
    public static void main(String[] args) {
        Scanner keyboard = new Scanner(System.in);
        Processor[] inputs = new Processor[10];
        System.out.println("Input 10 values for the array: ");
        for (int i = 0; i < inputs.length; i++) {
            inputs[i] = keyboard.nextInt();


        }
        System.out.println("The average of the numbers inputed is: ");
        System.out.println(arrayAverage.inputs());
        System.out.println("The largest of the numbers inputed is: ");
        System.out.println(arrayMax.inputs());
        System.out.println("The smallest of the numbers inputed is: ");
        System.out.println(arrayMin.inputs());
        System.out.println("The numbers inputed are: ");
        System.out.println(toString.inputs());
    }
}

这是Processor类主要方法中的编码问题吗?

3 个答案:

答案 0 :(得分:0)

您已将输入声明为Processor

的数组
Processor[] inputs = new Processor[10];

Processor包含整数数组,但Processor不是整数。因此,这不合法:

inputs[i] = keyboard.nextInt();

表示取第Processor并为其指定一个整数。但inputs[i]Processor,因此您只能为其分配Processor

Pro-tip:当编译器给出错误时,它会告诉哪个文件行导致错误。发布问题时,始终会指出导致编译错误的行,因为这样可以避免人们在尝试查找问题时阅读文件的每一行。

答案 1 :(得分:0)

在这里查看您的代码:

Processor[] inputs=new Processor[10];  //1

for(int i=0; i<inputs.length;i++)
{
    inputs[i]=keyboard.nextInt();   //2
}

//1您创建了一个Processor类型的数组 //2您尝试使用整数inputs[i]=keyboard.nextInt();

填充此数组

这会导致此特定错误。

答案 2 :(得分:0)

我将至少推荐以下更改:

处理器类

更改

public Processor() {
    int[] numbers = new int[10];
}

public Processor() {
    value = new int[10];
}

ProessorTest Class

在主要方法中,

变化

    Processor[] inputs = new Processor[10];
    System.out.println("Input 10 values for the array: ");
    for (int i = 0; i < inputs.length; i++) {
        inputs[i] = keyboard.nextInt();


    }

    Processor inputs = new Processor();
    System.out.println("Input 10 values for the array: ");
    for (int i = 0; i < inputs.length; i++) {
        inputs.value.add(keyboard.nextInt());
    }