Correção

10 respostas
java
E

Encontrar o dobro de um número caso ele seja positivo e o seu triplo caso seja negativo,
imprimindo o resultado.

Está certo? Esta Certo?

package teste;

import java.util.Locale;

import java.util.Scanner;

public class valores {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b= 2;
double c = 3;
double tripo = a*c;
double mult = a*b;
if(mult>0) {
	System.out.println(" positivo " + mult);
   }else {
	if(tripo<0) {
	System.out.println(" Negativo " + tripo);
	input.close();
	}
}
      }

}

10 Respostas

S

@Emanuel_Almeida

Pelo que entendi você tem que comparar a sua variável de entrada “a”.
Ou seja, verificar se a >0 ou a < 0.
Você também já está calculando o resultado para os dois casos que te interessa (do jeito que fez o código não ocorre nada se a=0) antes saber se o número é positivo ou negativo. Você poderia imprimir “a * b” ou “a * c” dentro print.
Outra coisa, o input.close( ) está dentro do segundo if, se o primeiro if for verdadeiro, o input.close( ) não vai ocorrer.

Abraço.

S

Testei seu código e funciona! rsss.
Mas você não está verificando se um número é positivo ou negativo e sim se o produto dele por outro positivo é, mas no fim das contas funciona do mesmo jeito…
Enfim, achei até legal o código que vc fez rs.
Se fosse um calculo complexo não compensaria calcular todos os casos antes porque estaria desperdiçando memória.

Abraço

E

Mas ta certo? se fosse uma prova, eu passaria?

E

me explica como vc faria este código?

E
package teste;

import java.util.Locale;

import java.util.Scanner;

public class valores {
public static void main(String[] args) {
Locale.setDefault(Locale.US);
Scanner input = new Scanner(System.in);
double a = input.nextDouble();
double b= 2;
double c = 3;
if(a>0) {
	System.out.println(" positivo " + a*b);
   }else {
	if(a<0) {
	System.out.println(" Negativo " + a*c);
	
	}
	input.close();
}
      }

}

W

Vc aplicou uma das sugestões do colega, mas o problema com o fechamento do Scanner que ele mencionou continua.

Às observações dele quero adicionar que é importante se atentar as convenções de nomenclatura da linguagem, por exemplo, nome de classes deveriam começar com letra maiúscula. Vc tambem deveria dar nomes mais significativos para as variaveis.

Eis como eu faria:

import java.util.Scanner;

public class Valores {
  public static void main(String... args) {
    try(Scanner input = new Scanner(System.in)) {
      double number = input.nextDouble();
      if (number > 0) {
        System.out.printf("Positivo %.2f\n", number * 2);
      } else if (number < 0) {
        System.out.printf("Negativo %.2f\n", number * 3);
      } else {
        System.out.println("Não trabalhamos com zero");
      }
    }
  }
}

Vc viu que eu não invoquei o método close() do Scanner? Isso é por causa do try with resources. Instanciando o Scanner da forma como eu fiz, ele é fechado automaticamente pra mim.

E

como assim não trabalhamos com zero?

W

É só uma mensagem qualquer pro usuario saber que 0 não é aceito.

Do jeito que vc fez, se o usurio colocasse zero, o programa não faria nada, aí achei importante colocar a mensagem avisando.

E

Mas do jeito que fiz ta certo? ou seja, ta beleza, da pra passar?

W

Na minha opinião, seu código corrigido aqui passa sim, já que faz o que foi pedido. Só bota a linha input.close(); no lugar certo.

Criado 8 de maio de 2020
Ultima resposta 8 de mai. de 2020
Respostas 10
Participantes 3