Dúvida entrada de dados e armazenar numa variável char

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);
	}
}