Repetição na class

5 respostas
rodrigoerocha

Estou com um problema com um programa que fiz; Minha intenção era ele voltar no menu.

Escreva uma classe Carro com as seguintes características:
Atributos:
· Kilômetros percorridos
· Quantidade de gasolina no tanque (em litros)
· Rendimento (kilômetros por litro)
Funcionalidades
· andar: a esta funcionalidade deve ser informada a distância a ser percorrida. A cada invocação, o objeto deve verificar se existe gasolina suficiente. Caso exista, deve computar a distância total percorrida e deduzir do tanque a quantidade de gasolina gasta.
· abastecer: deve prover um meio do usuário da classe informar a quantidade de gasolina a ser adicionada ao tanque
Escreva um pequeno programa para testar sua classe.

CLASS
import java.util.Scanner;

public class Carro {

	public float kilometro;
	public float combustivel;
	public float rendimento;
	
	Scanner ler = new Scanner(System.in);
		
	public void andar() {
		System.out.println("A distancia percorrida " + kilometro + " kilometros");
		if (combustivel * rendimento > kilometro){
			combustivel -= kilometro / rendimento;
			System.out.println("Voce percorreu " + kilometro + " e esta com " + combustivel + " litros no tanque");
		} else {
			System.out.println("Voce não tem combustivel para andar " + kilometro + " kilometros");
		}
	}

	public void abastecer() {
		System.out.println("Digite a quantidade de combustivel vc quer colocar");
		float abastecer = ler.nextFloat();
		combustivel += abastecer;
	}
}

PROGRAMA

import java.util.Scanner;
public class Andar {
	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		int voltar = 0;
		Carro c1 = new Carro();
		System.out.println("Digite os kilometros percorridos");
		c1.kilometro = ler.nextFloat();
		System.out.println("Digite o combustivel do tanque");
		c1.combustivel  = ler.nextFloat();
		System.out.println("Digite o rendimento do veiculo");
		c1.rendimento  = ler.nextFloat();
		System.out.println("Digite a opção");
		System.out.println("1- Andar");
		System.out.println("2- Abastecer");
		System.out.println("3- Sair");
		int escolha;
		escolha = ler.nextInt();
		while (voltar == 0){
			while (escolha < 1 || escolha > 3){
				System.out.println("Opção invalida");
				System.out.println("Digite novamente a opção");
				System.out.println("1- Andar");
				System.out.println("2- Abastecer");
				System.out.println("3- Sair");
				escolha = ler.nextInt();
			}
			switch (escolha){
			case 1:
				c1.andar();
				break;
			case 2:
				c1.abastecer();
				break;
			case 3:
				voltar = 2;
				break;
			}
		}
	}
}

5 Respostas

rodrigoerocha

Consegui resolver.

A repetição não estava pegando o menu.

import java.util.Scanner; public class Andar { public static void main(String[] args) { Scanner ler = new Scanner(System.in); int voltar = 0; Carro c1 = new Carro(); System.out.println("Digite os kilometros percorridos"); c1.kilometro = ler.nextFloat(); System.out.println("Digite o combustivel do tanque"); c1.combustivel = ler.nextFloat(); System.out.println("Digite o rendimento do veiculo"); c1.rendimento = ler.nextFloat(); while (voltar == 0){ System.out.println("Digite a opção"); System.out.println("1- Andar"); System.out.println("2- Abastecer"); System.out.println("3- Sair"); int escolha; escolha = ler.nextInt(); while (escolha < 1 || escolha > 3){ System.out.println("Opção invalida"); System.out.println("Digite novamente a opção"); System.out.println("1- Andar"); System.out.println("2- Abastecer"); System.out.println("3- Sair"); escolha = ler.nextInt(); } switch (escolha){ case 1: c1.andar(); break; case 2: c1.abastecer(); break; case 3: voltar = 2; break; } } } }

mduques

tenta assim:
inicie o escolha com -1, o programa vai entar no while e mostrar o menu… vc noa precisa mostrar o menu antes

antes ...
System.out.println("Digite o rendimento do veiculo");   
        c1.rendimento  = ler.nextFloat();   
        int escolha = -1
.
.
.

... continua como tava
abelgomes
menu();
		do {
			switch (opcao) {
			case 1:
				System.out.println(1);
				break;
			case 2:
				System.out.println(2);
				break;
			case 0:
				System.exit(0);
				break;
			default:
				System.out.println("Opção invalida");
				break;

			}
			menu();
		} while (true);
	}

	public static void menu() throws NumberFormatException, IOException {
		System.out.println("1 - Imprime 1 ");
		System.out.println("2 - Imprime 2 ");
		System.out.println("0 - Sair");
		System.out.print("Escolha uma opção: ");
		opcao = Integer.parseInt(entrada.readLine());
	}

esse é o menu…use do{ }while(); pq assim vc garante q ele passe pelo menos 1 vez no laço :wink:

abelgomes
package guj;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Menu {
	static BufferedReader entrada = new BufferedReader(new InputStreamReader(
			System.in));
	static int opcao = 0;

	public static void main(String... args) throws NumberFormatException,
			IOException, InterruptedException {

		menu();
		do {
			switch (opcao) {
			case 1:
				System.out.println(1);
				break;
			case 2:
				System.out.println(2);
				break;
			case 0:
				System.exit(0);
				break;
			default:
				System.out.println("Opção invalida");
				break;

			}
			menu();
		} while (true);
	}

	public static void menu() throws NumberFormatException, IOException {
		System.out.println("1 - Imprime 1 ");
		System.out.println("2 - Imprime 2 ");
		System.out.println("0 - Sair");
		System.out.print("Escolha uma opção: ");
		opcao = Integer.parseInt(entrada.readLine());
	}

}

joga isso num .java e roda pra V se é um menu assim q vc quer…

rodrigoerocha

AGORA FICOU CERTINHO.. FIZ O TESTE DE TODAS AS FORMAS

CLASS

import java.util.Scanner;
public class Carro {
	public float kilometro;
	public float combustivel;
	public float rendimento;
	Scanner ler = new Scanner(System.in);
	public void andar() {
		
		if (combustivel * rendimento >= kilometro){
			combustivel -= kilometro / rendimento;
			System.out.println("Voce percorreu " + kilometro + " e esta com " + combustivel + " litros no tanque");
		} else {
			System.out.println("Voce não tem combustivel para andar " + kilometro + " kilometros");
		}
	}
	public void abastecer() {
		System.out.println("Digite a quantidade de combustivel vc quer colocar");
		float abastecer = ler.nextFloat();
		combustivel += abastecer;
		System.out.println("O tanque esta com " + combustivel + " litros");
	}
}

PROGRAMA

import java.util.Scanner;

public class Andar {
	public static void main(String[] args) {
		Scanner ler = new Scanner(System.in);
		int voltar = 0, escolha, pros = 0, abast;
		
		Carro c1 = new Carro();
		c1.combustivel = 0;
		while (voltar == 0) {
			System.out.println("Digite a opção");
			System.out.println("1- Andar");
			System.out.println("2- Abastecer");
			System.out.println("3- Sair");
			escolha = ler.nextInt();
			while (escolha < 1 || escolha > 3) {
				System.out.println("Opção invalida");
				System.out.println("Digite novamente a opção");
				System.out.println("1- Andar");
				System.out.println("2- Abastecer");
				System.out.println("3- Sair");
				escolha = ler.nextInt();
			}
			switch (escolha) {
			case 1:
				System.out.println("Digite os kilometros percorridos");
				c1.kilometro = ler.nextFloat();
				System.out.println("Digite o rendimento do veiculo");
				c1.rendimento = ler.nextFloat();
				if (pros == 0){
					System.out.println("Voce tem " + c1.combustivel + " litros de combustivel");
					System.out.println("Deseja abastecer?");
					System.out.println("1- Sim");
					System.out.println("2- Não");
					abast = ler.nextInt();
					if (abast == 1){
						System.out.println("Quantos litros?");
						c1.combustivel += c1.combustivel = ler.nextFloat();
					}
				}
				c1.andar();
				break;
			case 2:
				c1.abastecer();
				break;
			case 3:
				voltar = 1;
				break;
			}
		}
	}
}

SOU NOVATO AINDA EM JAVA.. MAS ESTOU NA LUTA.. VALEWW

Criado 28 de outubro de 2008
Ultima resposta 28 de out. de 2008
Respostas 5
Participantes 3