Opa no caso é porque você está lendo como inteiro
package exercicios;
import java.util.Scanner;
public class ValoresDeCarros {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double valorTabela;
System.out.println("Digite o valor de tabela do carro:");
valorTabela = scanner.nextDouble();
double resultadoDesconto = (valorTabela*20)/100;
double resultadoPagamento = valorTabela-resultadoDesconto;
System.out.println("O valor do desconto será: R$" + resultadoDesconto);
System.out.println("O valor e a ser pago é: R$" + resultadoPagamento);
}
}
Só que a leitura denpederá do Locale se estiver em português vai ler valores como 19567,34 se estiver em inglês usará o ponto 19567.34
package exercicios;
import java.util.Scanner;
import java.util.Locale;
public class ValoresDeCarros {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//Confugurando para ler com vírgula
scanner.useLocale(new Locale("pt","BR"));
double valorTabela;
System.out.println("Digite o valor de tabela do carro:");
valorTabela = scanner.nextDouble();
double resultadoDesconto = (valorTabela*20)/100;
double resultadoPagamento = valorTabela-resultadoDesconto;
System.out.println("O valor do desconto será: R$" + resultadoDesconto);
System.out.println("O valor e a ser pago é: R$" + resultadoPagamento);
}
}
Se você quiser que os valores impressos também sejam no formato com vírgula pode usar um formatter http://www.guj.com.br/t/formatacao-de-valores-monetarios/227203/2