Implementei o código abaixo:
import java.util.Scanner;
public class AgenciaAutomoveis {
// programa que leia os dados de 100 carros:
// 1 - a marca do carro; 2 - o preco do carro
// programa que imprima
// 1 - porcentagem de carros da marca 1
// menor preco de um automovel
public static void main(String[] args) {
// declaracao de variaveis
int preco = 0;
char marca;
int contadorfiat;
int contadorgeral;
// instancia de entrada de dados via usuario
Scanner entrada = new Scanner(System.in);
for (int i = 0; i <= 3; i++){
// entrada de dados
System.out.println("Qual a marca do carro? (FIAT, VOLKSVAGEN, OUTRA)");
marca = entrada.next().charAt(0);
System.out.println("Qual o preco do carro?");
preco = entrada.nextInt();
// logicas de
if (marca == 'FIAT' & marca == 'fiat'){
// *
}
}
}
}
No entando, em * o eclipse acusa o erro de que a variavel “marca” jamais foi lida.
Creio que construí as logicas de entrada de maneira correta.
O que pode estar ocorrendo?
Amigo, da proxima vez use a tag [code] para postar o código… pois fica horrivel a visualização…
Sim, mas você inicializou a váriavel dentro de um bloco for, e a jvm não pode garantir que ele será executado pois se você colocar de 0 até 0 ele não será executado e nesse caso como ela sabe da possibilidade de a variavel não ter valor algum ela te avisa então inicie a variavel com um caracter qualquer(mas lembre que ‘’ - vazio, não é um caracter), pra propriedades da classe esse erro não aconteceria, mas você vai ter mais erros ai pois ‘Fiat’ não é um caracter, são varios então você deve usar o uma referência da classe String e comparar com o equals() :), estou estudando java e uma apostila que me ajudou muito foi a da Caelum http://www.caelum.com.br/apostilas/.
É bem isso que o FredericoGenovez disse…
Porque esta utilizando o tipo char?
Substitua-o por String, e o seu if ficara assim:
if("fiat".equals(marca.toLowerCase())){
}
É, ahco que suas alternativas são a que o gustavocoolt disse, e também como você está pegando o char na primeira posição
marca = entrada.next().charAt(0);
No trecho que você faz a verificação você pode verificar com um char, mas se você tiver duas alternativas que começam com a mesma letra você vai ter um erro de lógica.
if (marca == 'F'){
//Sou um fiat por que começo com F
}
se eu criar uma variavel do tipo string, posso realizar tal procedimento?
isto é, comparar:
if marca == ‘fiat’ || marca == ‘FIAT’
?
nesse caso, como eu crio essa variavel string e se há necessidade de uma atribuição antes do for.
obg
Você cria uma referência da classe String e coloca em uma váriavel assim:
String marca = new String();
Deste modo você não precisa atribuir um valor pois você já atribuiu a referência, mas para comparar duas Strings você deve usar o método ‘equals’ que compara o valor das Strings e não o operador ‘==’ que compara se elas são iguais na memória faça assim:
if(marca.equals("fiat"))
Você pode usar o metódo toLowerCase() para transformar tanto a String recebida em uma String com todas as letras minusculas pois Fiat não é igual à FiAt, faça assim:
if(marca.toLowerCase().equals("fiat"))
Qual o problema com esse código?
Ele está retornando porcentagem = 0 e não retorna o valor do menor preco
[code]import java.util.Scanner;
public class AgenciaAutomoveis {
// programa que leia os dados de 100 carros:
// 1 - a marca do carro; 2 - o preco do carro
// programa que imprima
// 1 - porcentagem de carros da marca 1
// menor preco de um automovel
public static void main(String[] args) {
// declaracao de variaveis
int preco = 0;
int marca;
int contadorfiat = 0;
int contadorgeral = 0;
float porcentagem = 0;
int menorpreco = 999999;
// instancia de entrada de dados via usuario
Scanner entrada = new Scanner(System.in);
for (int i = 0; i < 3 ; i++){
// entrada de dados
System.out.print("Qual a marca do carro? (1-FIAT, 2-VOLKSVAGEN, 3-OUTRA) ");
marca = entrada.nextInt();
System.out.print("Qual o preco do carro? ");
preco = entrada.nextInt();
// logicas de processamento
if (marca == 1){
contadorfiat = contadorfiat++;
}
if ( (preco <= menorpreco) && (marca == 2) ){
menorpreco = preco;
}
contadorgeral = contadorgeral + 1;
}
// logicas de impressao
System.out.println(" ");
// porcentagem
porcentagem = (((contadorfiat/contadorgeral)*100));
System.out.println("Porcentagem de carros fiat é " + porcentagem);
//menor preco
System.out.println("Menor preço de carros da Volkswagem é " + menorpreco);
}
}[/code]
Foi um ero na sua conta… olhe no meu como funciona e analise como fiz o cálculo usando regra de 3…
import java.util.Scanner;
public class Agencia {
public static void main(String[] args) {
int preco = 0;
int marca;
int contadorfiat = 0;
int contadorgeral = 0;
float porcentagem = 0;
int menorpreco = 999999;
Scanner entrada = new Scanner(System.in);
for (int i = 0; i < 3 ; i++){
System.out.print("Qual a marca do carro? (1-FIAT, 2-VOLKSVAGEN, 3-OUTRA) ");
marca = entrada.nextInt();
System.out.print("Qual o preco do carro? ");
preco = entrada.nextInt();
if (marca == 1){
contadorfiat++;
}
if ( (preco <= menorpreco) && (marca == 2) ){
menorpreco = preco;
}
contadorgeral++;
}
System.out.println(" ");
porcentagem = ((contadorfiat*100)/contadorgeral);
System.out.println("Porcentagem de carros fiat é " + porcentagem);
System.out.println("Menor preço de carros da Volkswagem é " + menorpreco);
}
}
obg a todos que ajudaram, consegui implementar o codigo. está rodando ok. grato
import java.util.Scanner;
public class AgenciaAutomoveis {
// programa que leia os dados de 100 carros:
// 1 - a marca do carro; 2 - o preco do carro
// programa que imprima
// total arrecadado com vendas de carros da volkswagen
// porcentagem de carros da fiat
// menor preco de um automovel de uma outra marca
public static void main(String[] args) {
// declaracao de variaveis
int controle = 0;
int preco = 0;
int marca;
int menor = 0;
int soma = 0;
int contadorfiat = 0;
int contadorvolkswagen = 0;
float porcentagem = 0;
int menorpreco = 999999;
// instancia de entrada de dados via usuario
Scanner entrada = new Scanner(System.in);
System.out.print("Quantos carros serão vendidos? ");
controle = entrada.nextInt();
for (int i = 1; i <= controle ; i++){
// entrada de dados
System.out.print("Qual a marca do carro? (1-FIAT, 2-VOLKSVAGEN, 3-OUTRA) ");
marca = entrada.nextInt();
System.out.print("Qual o preco do carro? ");
preco = entrada.nextInt();
if (marca == 2){
soma = soma + preco;
contadorvolkswagen = contadorvolkswagen + 1;
}
if (marca == 1){
contadorfiat = contadorfiat + 1;
}
if ( (preco < menor) && (marca == 3) ){
menor = preco;
}
}
// logicas de impressao
System.out.println(" ");
// arrecadacao com carros da volkswagen
System.out.println("Foram vendidos " + contadorvolkswagen + " carros da volkswagen" +
" e arrecadou-se " + soma + " $ na venda desses");
// porcentagem
porcentagem = ( ((contadorfiat*100)/controle) );
System.out.println("Porcentagem de carros vendidos da fiat é " + porcentagem);
//menor preco
System.out.println("Menor preço de carros da outra marca " + menorpreco);
}
}