Java - Calculadora(Do While)

6 respostas
J

Estou trabalhando em um código que consiste em realizar as operações básicas (soma, subtração, multiplicação e divisão) entre dois números, e gostaria de saber se estou seguindo o caminho correto. Segue o código abaixo:

public class App {
  
  public static void main(String[] args) {
    Scanner scanner = new scanner(System.in);
    float n1 = 0; n2 = 0;
    
    do {
      System.out.println("Digite um numero: ");
      n1 = scanner.nextInt();
      
      System.out.println("Digite outro: ");
      n2 = Scanner.nextInt();
      
      som = n1 + n2;
      sub = n1 - n2;
      mult = n1 * n2;
      div = n1 / n2;
      
      System.out.println("Resultado da soma: " +som);
      System.out.println("Resultado da subtracao: " +sub);
      System.out.println("Resultado da multiplicacao: " +mult);
      System.out.println("Resultado da divisao: " +div);
      System.out.println("Deseja repetir a operacao?");
      
      String com = scanner.nextLine;
      
      if (com.equals("Sim")) {
        System.out.println("Repita o procedimento.");
      }
      
      while(com.equals("Nao"));
      System.out.println("Operacao finalizada.");
    }
  }
}

E caso alguém pergunte… sim, eu sei que está dando erro, e também gostaria de saber o por quê disso.

6 Respostas

Fefo80

Posta aqui qual erro deu aí, por gentileza.

B

Boas, veja se ajuda

public class Calcular {

    public double calculadora(double num1, double num2, String operador) {
        double resultado = 0;
        switch (operador) {
            case "+":
                resultado = num1 + num2;
                break;
            case "-":
                resultado = num1 - num2;
                break;
            case "/":
                resultado = num1 / num2;
                break;
            case "*":
                resultado = num1 * num2;
                break;
        }
        System.out.println("O resultado da operação é: " + resultado);
        return resultado;
    }

    public static void main(String[] args) {
        Calcular calculadora = new Calcular();
        Scanner obj = new Scanner(System.in);
        boolean sair = false;
        do {
            System.out.println("introduza numero 1");
            double num1 = obj.nextDouble();
            System.out.println("introduza numero 2");
            double num2 = obj.nextDouble();
            System.out.println("introduza operador");
            obj.nextLine();
            String operador = obj.next();
            calculadora.calculadora(num1, num2, operador);
            System.out.println("Prima 1 para continuar e 0 para sair");
            int out = obj.nextInt();
            if (out == 1) {
                sair = false;
            } else {
                if (out == 0) {
                    sair = true;
                }
            }
        } while (sair != true);
        System.out.println("ATE LOGO :)");

    }
}
J
Foi esses:

App.java:40: error: while expected

}

^

App.java:41: error: illegal start of expression

}

E não foi apenas nesse código, todos que eu utilizei o comando while aconteceu isso.
J

Eu fiz um semelhante a esse e deu o mesmo erro:

import java.util.Scanner;

public class App {

public static void main(String[] args) {

float num1, num2;

char com;

Scanner scanner = new Scanner(System.in);

do {

System.out.println(Pressione um dos simbolos no teclado para realizar determinada operacao: \n);

System.out.println("\t Soma: +");

System.out.println("\t Subtracao: -");

System.out.println("\t Multiplicacao: <em>“);

System.out.println(”\t Divisao: /");

switch(com) {

case +:

System.out.println("Digite o primeiro numero: ");

num1 = scanner.nextFloat();

System.out.println("Digite outro: ");

num2 = scanner.nextFloat();

som = num1 + num2;;

System.out.println("Resultado: " +som);

break;

case -:

System.out.println("Digite um numero: ");

num1 = scanner.nextFloat();

System.out.println("Digite outro: ");

num2 = scanner.nextFloat();

sub = num1 - num2;

System.out.println("Resultado: " +sub);

break;

case "</em>":

System.out.println("Digite um numero: ");

num1 = scanner.nextFloat();

System.out.println("Digit outro: ");

num2 = scanner.nextFloat();

mult = num1 * num2;

System.out.println("Resultado: " +mult);

break;

case /:

System.out.println("Digite um numero: ");

num1 = scanner.nextFloat;

System.out.println("Digite outro: ");

num2 = scanner.nextFloat();

div = num1 / num2;

System.out.println("Resultado: " +div);

break;

default:

System.out.println(Comando nao reconhecido.);

}

System.out.println(Deseja realizar outra operacao?);

String op = scanner.nextLine;

if (op.equals(Sim)) {

System.out.println(Repita o procedimento.);
} while(op.equals("Nao"));
              System.out.println("Operacao finalizada.");
           }    
  }

}

B

Boas amigo, corrigido, repare que tem variáveis que não foram declaradas, exp: mult = num1 * num2; “mult” não está declarado, sub também não e por ai… Quando quer ler uma operação tem de ler o char que declarou, senão o input não reconhece nada exp:“com = scanner.next().charAt(0);”
Para o Switch reconhecer uma variável char tem de estar entre aspas e não duplas aspas. De resto esta feito, já está a funcionar.

import java.util.Scanner;

public class App{

    public static void main(String[] args) {
        float num1, num2;
        char com;
        String op;
        Scanner scanner = new Scanner(System.in);
        do {
            System.out.println("Pressione um dos simbolos no teclado para realizar determinada operacao: \n");
            System.out.println("\t Soma: +");
            System.out.println("\t Subtracao: -");
            System.out.println("\t Multiplicacao: ");
            System.out.println("\t Divisao: /");
            com = scanner.next().charAt(0);
            switch (com) {
                case '+':
                    System.out.println("Digite o primeiro numero: ");
                    num1 = scanner.nextFloat();
                    System.out.println("Digite outro: ");
                    num2 = scanner.nextFloat();
                    float som = num1 + num2;
                    ;
                    System.out.println("Resultado: " + som);
                    break;
                case '-':
                    System.out.println("Digite um numero: ");
                    num1 = scanner.nextFloat();
                    System.out.println("Digite outro: ");
                    num2 = scanner.nextFloat();
                    float sub = num1 - num2;
                    System.out.println("Resultado: " + sub);
                    break;
                case '*':
                    System.out.println("Digite um numero: ");
                    num1 = scanner.nextFloat();
                    System.out.println("Digit outro: ");
                    num2 = scanner.nextFloat();
                    float mult = num1 * num2;
                    System.out.println("Resultado: " + mult);
                    break;
                case '/':
                    System.out.println("Digite um numero: ");
                    num1 = scanner.nextFloat();
                    System.out.println("Digite outro: ");
                    num2 = scanner.nextFloat();
                    float div = num1 / num2;
                    System.out.println("Resultado: " + div);
                    break;
                default:
                    System.out.println("Comando nao reconhecido.");
            }
            System.out.println("Deseja realizar outra operacao (S) para continuar e (N) para sair?");
            scanner.nextLine();
            op = scanner.nextLine();
            if (op.equalsIgnoreCase("S")) {
                System.out.println("Repita o procedimento.");

            }
            
        }    while (op.equalsIgnoreCase("S"));
            System.out.println("Operacao finalizada.");
    }
}

Bom estudo

staroski

Você não utilizou o while, utilizou o do-while.

while é assim:

while ( condição ) {
    // código a ser repetido
}

do-while é assim:

do {
    // código a ser repetido
} while ( condição );

No seu caso você esqueceu o } antes do while.

Criado 28 de setembro de 2021
Ultima resposta 30 de set. de 2021
Respostas 6
Participantes 4