[RESOLVIDO] Problemas com erro - Java

Alguém pode me ajudar e explicar a resolver esse erro?

Essa é a proposta do exercício:

2.32 (Valores negativos, positivos e zero) Escreva um programa que insira cinco números, além de determinar e imprimir quantos negativos, quantos positivos e quantos zeros foram inseridos.

Esse foi a minha solução: Não estou entendendo a causa do erro. Por gentileza, me ajudem a entender. O que eu to fazendo de errado naquele if no contador de vetor?

import java.util.Scanner;
public class Exe232 {
public void EntraNumeros() {
Scanner entra = new Scanner(System.in);
float num[] = new float[5]; //cria um vetor para guardar as entradas
for (int X=0;X < num.length;X++) { //contador
System.out.print("Entre o número " + (X+1) + " : ");
num[X] = entra.nextFloat(); //armazena as entradas no vetor
}
int X; //prepara o contador
float zero = 0; // declara variáveis para a contagem
float neg = 0; //
float pos = 0; //

  for (X = 0; X < num.length;X++) {
    if (num[X] = 0)  {  <-------- QUE ERRO É ESTE???????
  		zero++;
  	}
  	if (num[X] >= 1)  {
  		pos++;
  	}
  	if (num[X] <= 0)  {
  		neg++;
  	}
  }
  System.out.printf("Temos : " + zero + " numeros zero");
  System.out.printf("Temos : " + pos + " numeros positivos");
  System.out.printf("Temos : " + neg + " numeros negativos");

}

public static void main(String[] arg) {
Exe232 entra = new Exe232();
entra.EntraNumeros();
}
}

O correto é == ao invés de = para comparar

num1 = num2 -> Atribuição de valor
num1 == num2 -> Comparação de valor

você estava atribuindo um valor ao num[X] ao invés de comparar

Complementando o que o @Mike disse:
Todo if, no java (e em outras linguagens) espera uma equação lógica (que retorna true ou false).
Ocorre que o operador =, sozinho, representa atribuição

int x = 10; //Definindo o valor 10 à variável  x
vetor[y] = 100; //Atribuindo o valor 100 à posição y do vetor

E não há retorno de true ou false (valor booleano).
O operador de comparação == e os operadores >, <, >=, <= retornam valores lógicos (true ou false).
Há outros operadores que também trabalham com valores booleanos, além de métodos.

Eita. kkkk
Sabia que era algo simples.
Poxa vocês são demais mesmo. Obrigado mil vezes.
Esse negócio aqui devia ter uma nota pra dar aos que nos ajudam (tipo aqueles chatinhos de telemarketing) kkk…

E a propósito. Não sei como formatar as linhas finais:

System.out.printf(“Temos : " + zero + " numeros zero”);
System.out.printf(“Temos : " + pos + " numeros positivos”);
System.out.printf(“Temos : " + neg + " numeros negativos”);

Acho que poderia por 2 casas decimais e tal… Isso eu não estou entendendo como fazer.