What's wrong?

-4
import java.util.Scanner;

public class desafio {
    public static void main(String args[]) {
        char op;
        float soma;
        float mult;
        float sub;
        float div;
        float num;

        Scanner entrada = new Scanner(System.in);
        op = entrada.next().charAt(0);

            switch (op) {
                case '+': while (num = entrada.nextFloat() != 0) {
                    soma += num;
                }
                    break;

                case '-': while (num = entrada.nextFloat() != 0) {
                    sub = entrada;
                    sub -= num;
                }
                    break;
                case 'x': while(num = entrada.nextFloat() != 0) {
                    mult = 1;
                    mult *= num;
                }
                case '/': while(num = entrada.nextFloat() != 0) {
                    div = 1;
                    num = entrada;
                }
            }
    }
}
    
asked by anonymous 26.10.2017 / 21:30

1 answer

0

When you declare num = entrada.nextFloat() != 0 in this way, you end up assigning a value of type boolean to num , because the expression of this form returns whether the number entered is equal to zero, that is, a true or% with%. As you previously stated that num is a false you get the error of incompatible types.

With a simple modified your code works:

import java.util.Scanner;

public class Desafio {

    public static void main(String args[]) {
        char op;
        float result = 0;
        float num;

        Scanner entrada = new Scanner(System.in);
        op = entrada.next().charAt(0);

        switch (op) {
            case '+':
                System.out.println("Você escolheu soma!");
                do {
                    System.out.println("Digite um número para somar: (Digite 0 para sair)");
                    num = entrada.nextFloat();
                    result += num;
                } while (num != 0);
                break;

            case '-':
                System.out.println("Você escolheu subtração!");
                do {
                    System.out.println("Digite um número para subtrair: (Digite 0 para sair)");
                    num = entrada.nextFloat();
                    result -= num;
                } while (num != 0);
                break;

            case 'x':
                System.out.println("Você escolheu multiplicação!");
                do {
                    System.out.println("Digite um número para multiplicar: (Digite 0 para sair)");
                    num = entrada.nextFloat();
                    result *= num;
                } while (num != 0);
                break;

            case '/':
                System.out.println("Você escolheu divisão!");
                do {
                    System.out.println("Digite um número para dividir: (Digite 0 para sair)");
                    num = entrada.nextFloat();
                    result /= num;
                } while (num != 0);
                break;
            default:
                System.out.println("Nenhuma operação matemática escolhida.");
        }

        System.out.println(result);
    }

}

Two remarks: Always place the default on the switch case to handle if no condition is met and remember that class name always with the first capital letter;)

That's all, good studies!

    
26.10.2017 / 22:16