2017-01-22 8 views
-1

Я занимаюсь изготовлением массивов. Я создал два класса. Первый класс (класс 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 создает экземпляр процессора и просит пользователя ввести 10 значений для массива. Затем я вызываю методы из первого класса и печатаю их значения. Однако, когда я компилирую этот класс, я получаю следующую ошибку: «incompatible type- int cannot be converted to Processor».

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 классе?

+0

Пожалуйста, ради вас и у нас, попытаться сделать ваши отступы лучше. Либо пусть ваша IDE сделает ваши отступы кода для вас (большинство из них имеют команду в формате кода), либо изучают стандартные правила отступов кода и следуют за ними. Это значительно облегчит нам выполнение вашего кода. Заранее спасибо. –

+0

Это очень просто. Вы пытаетесь присвоить значение int переменной программы –

ответ

1

Вы объявили входы как массив Processor:

Processor[] inputs = new Processor[10]; 

Processor содержит массив целого, но Processor не является целым числом. Таким образом, это не законно:

inputs[i] = keyboard.nextInt(); 

, который говорит, чтобы взять ITH Processor и присвоить ему целое. Но inputs[i] - это Processor, поэтому вы можете назначить только Processor.

Pro-tip: когда компилятор выдаст вам сообщение об ошибке, он сообщит, в какой строке произошел ошибка. При отправке вопроса всегда указывается строка, которая вызывает ошибку компиляции, поскольку это спасает людей от необходимости читать каждую строку вашего файла, пытаясь найти проблему.

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();

Это вызывает эту конкретную ошибку.

0

Я буду рекомендовать следующие изменения по крайней мере:

Процессор класса

Изменить

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

в

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

ProessorTest класса

В главном методе

изменение

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()); 
    }