[RESOLVIDO] Problemas com erro - Java

3 respostas
java
PapaiLu

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(<a href="http://System.in">System.in</a>);

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

}

}

3 Respostas

Mike

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

darlan_machado

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.

PapaiLu

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.

Criado 29 de junho de 2018
Ultima resposta 29 de jun. de 2018
Respostas 3
Participantes 3