For não acaba

6 respostas
M

Galera coloquei a condição no for para que quando o usuário digitar algo diferente de (s/S) o for termine, mas isso não esta acontecendo.
Tem outra dúvida também, esta está no código.
Quem puder me ajudar eu agradeço

package Questao20;
import java.util.*;
public class resp {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		short carAno;
		double carTotal=0, carValor;
		byte car2k=0,carGeral=0;
		String resp="s";
		
    for (resp.equalsIgnoreCase("s");;) {
		System.out.println("Informe o valor do veículo");
		carValor = ler.nextDouble();
		System.out.println("Informe o ano do veículo");
		carAno = ler.nextShort();
		if (carAno<=2000) {
			carTotal = (carValor-(carValor* 0.12));
			car2k++;
			carGeral++;
		}
		if (carAno>2000) {
			carTotal = (carValor-(carValor* 0.07));
			carGeral++;
		}
		System.out.println(">> Desconto: "+(carValor-carTotal)+"\n>> Valor a ser pago: "+carTotal);
		System.out.println("Deseja continuar calculando?(S/N)");
		resp = ler.next();
      }
    
	System.out.println(carGeral); // nessa linha aqui aparece um erro dizendo "Unreachable code"
	System.out.println(car2k); // e seu eu passa essa pra cima o erro pra para essa
	}

}

6 Respostas

Rodrigo_Sasaki

A condição de parada não é o segundo parâmetro do for?

sugestão: use um while, cara. Fica bem mais legívelwhile(resp.equalsIgnoreCase("s")){ //implementação }

InicianteJavaHenriqu

Ou do while para o usuário digitar pelo menos uma vez.

:thumbup:

JuniorMaia
import java.util.Scanner;

public class resp {   
  
    /**  
     * @param args  
     */   
    public static void main(String[] args) {   
        Scanner ler = new Scanner(System.in);   
        short carAno;   
        double carTotal=0, carValor;   
        byte car2k=0,carGeral=0;   
        String resp="s";   
               
          
    while(resp.equalsIgnoreCase("s")) {   
        System.out.println("Informe o valor do veículo");   
        carValor = ler.nextDouble();   
        System.out.println("Informe o ano do veículo");   
        carAno = ler.nextShort();   
        if (carAno<=2000) {   
            carTotal = (carValor-(carValor* 0.12));   
            car2k++;   
            carGeral++;   
        }   
        if (carAno>2000) {   
            carTotal = (carValor-(carValor* 0.07));   
            carGeral++;   
        }   
        System.out.println(">> Desconto: "+(carValor-carTotal)+"\n>> Valor a ser pago: "+carTotal);   
        System.out.println("Deseja continuar calculando?(S/N)");   
        resp = ler.next();   
      }
    
    System.out.println(carGeral);  
    System.out.println(car2k);  
     }   
  
}

o erro da saída se resolveu usando while ;}

M
public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		short carAno;
		double carTotal=0, carValor;
		byte car2k=0,carGeral=0;
		String resp="s";
		
    while (resp.equalsIgnoreCase("s")) {
		System.out.println("Informe o valor do veículo");
		carValor = ler.nextDouble();
		System.out.println("Informe o ano do veículo");
		carAno = ler.nextShort();
		if (carAno<=2000) {
			carTotal = (carValor-(carValor* 0.12));
			car2k++;
			carGeral++;
		}
		if (carAno>2000) {
			carTotal = (carValor-(carValor* 0.07));
			carGeral++;
		}
		System.out.println(">> Desconto: "+(carValor-carTotal)+"\n>> Valor a ser pago: "+carTotal);
		System.out.println("Deseja continuar calculando?(S/N)");
		resp = ler.next();
      }
    
	System.out.println("Carros com ano até 2000 vendidos: "+car2k);
	System.out.println("Total geral de carros vendidos: "+carGeral);
	}

Rodou do jeito que eu queria, muito obrigado ;)

uhum, se corrigiu mesmo JuniorMaia, obrigado ^^
Obrigado também ao InicianteJavaHenrique ^^

JuniorMaia

disponha ;}

lucaslzl

O comando de repetição “For” pode ser usado como “While”. O seu erro foi na ordem das informações.
Em um “For” coloca-se ( inicialização da variavel (int i = 0, por exemplo); condição para repetição (resp.equalsIgnoreCase(“s”), no seu caso); incrementação (i++ ou algo do tipo).
Você colocou (resp.equalsIgnoreCase(“s”) ;;), deveria ter colocado (; resp.equalsIgnoreCase(“s”); :wink:

Criado 14 de maio de 2012
Ultima resposta 14 de mai. de 2012
Respostas 6
Participantes 5