Galera, é o seguinte. Tenho que criar um menu de opções para o usuário entrar em uma sessão. E terei que usar a classe a seguir:
[quote]import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Leitura
{
public static String entra ()
{
InputStreamReader c = new InputStreamReader (System.in);
BufferedReader d = new BufferedReader ©;;
String s = “”;
try
{
s = d.readLine ();
}
catch (IOException e)
{
System.out.println (“Erro de entrada”);
}
return s;
}
}[/quote]
Então, seria mais ou menos o seguinte:
[quote]public static void main (String args [])
{
Leitura ll = new Leitura ();
System.out.println ("Digite a sessao desejada: ");
ll.entra (String ses ());
System.out.print (ll.entra ());
}
[/quote]
O que eu queria era armazenar este numero, fazendo a conversão, lógico, evocando o metodo entra da outra classe, e imprimir o numero digitado. Mas tá faltando alguma coisa. Poderiam me ajudar? Pois sem ao menos saber este começo, eu não vou poder seguir em frente usando o switch.
Bom, se alguem souber um jeito mais simples, me diga. Por enquanto, eu fiz este código aqui:
[quote]public class Inicio
{
private int menu;
public void setmenu (int mn)
{
menu = mn;
}
public int getmenu ()
{
return menu;
}
public static void main (String args [])
{
Inicio IN = new Inicio ();
Leitura L = new Leitura ();
System.out.println ("\t###Bem vindo ao controle de vistorias de veiculos!###\n");
System.out.println (" *Entre com o tipo de veiculo para cadastrar ->");
System.out.println (“1- Para veiculos de passeio.\n”+“2- Para veiculos de carga.\n”);
IN.setmenu (Integer.parseInt (L.entra ()));
if ( *== 1)
System.out.println (“Veiculos de passeio.”);
else
System.out.println (“Veiculos de carga.”);
}
}[/quote]
Agora a questão é: o que eu coloco dentro do if no lugar do asterisco, pra dar certo??
Há uma maneira mais fácil de fazer a leitura do console a partir do Java 5. É usando a classe Scanner.
public class Inicio {
public static void main (String args []) {
Scanner reader = new Scanner(System.in);
System.out.println ("\t###Bem vindo ao controle de vistorias de veiculos!###\n");
System.out.println (" *Entre com o tipo de veiculo para cadastrar ->\n");
System.out.println ("1- Para veiculos de passeio.");
System.out.println ("2- Para veiculos de carga.");
int lido = reader.nextInt();
if (lido == 1)
System.out.println ("Veiculos de passeio.");
else
System.out.println ("Veiculos de carga.");
}
}
Ok, colega. Obrigado. O fato de eu estar usando essa classe Leitura, é porque o professor tá priorizando ela na grade, pelo fato de usar um tratamento de exceção. Caso contrário, eu usaria a Scanner mesmo, que é mais fácil.
Agora o seguinte, não estou conseguindo fazer o switch, usando isso. O códico que eu usei foi o seguinte:
[quote]public class sw
{
public static void main (String args [])
{
Leitura leit = new Leitura ();
int valor = 0;
leit.entra ();
switch (valor)
{
case 0:
System.out.println (“valor zero”);
break;
case 1:
System.out.println ("valor um");
}
}
}
[/quote]
Essas linhas são só um começo. Como eu poderia fazer um switch simples para seguir em frente com o programa? Pois nem esse eu tou conseguindo usando essa classe leitura…
Seu switch me parece certo. Mas você deve gardar o valor lido na variável valor, ou só vai retornar 0.
Vai ser algo como
int valor = Integer.parseInt(leitura.getValor());
Não sei se esse método getValor() existe, consulte a classe Leitura para saber qual é o método certo. Aqui, estou assumindo que é um método que retorna String.
Depois, basta trocar o System.out.println() do seu programa por uma chamada de função, que vai para a próxima área do programa que você quer e boa sorte!!!
PS: Você não indenta código? Ou foi só um problema no copy&paste?
Vini, obrigado pelo apoio.
Bom, eu idento sim, mas na hora de colar tá aparecendo sem a identação.
E se eu usar o Code, sai fora do quadro.
Bom, depois de ralar, muito, consegui fazer 70% do programa que eu quero. Mas preciso da ajuda de vocês pra terminar. Não consigo fazer o switch final usando vetor.
Seria o seguinte. Uma garagem cadastra um determinado numero de carros ou caminhões. Se o vetor é 5, seria 5 carros. E por aí vai. Mas tem que ter um switch no final, para imprimir o carro desejado. Por exemplo, se eu quisesse o terceiro carro ou caminhão, digitaria 3 e retornaria, através do metodo get, os dados do terceiro veículo cadastrado.
Vejam o que eu fiz até agora, e se possível, me ajudem a fazer o swicht final, porque já tentei e não consigo.
[quote]public class Inicio
{
private int menu;
public void setmenu (int mn)
{
menu = mn;
}
public int getmenu ()
{
return menu;
}
public static void main (String args [])
{
Inicio IN = new Inicio ();
Leitura Lt = new Leitura ();
int vet1 = 1;
CarroPasseio Cp[] = new CarroPasseio [vet1];
Caminhao Cm[] = new Caminhao [vet1];
System.out.println ("\t###Bem vindo ao controle de vistorias de veiculos!###\n");
System.out.println (" *Entre com o tipo de veiculo para cadastrar e pressione enter ->");
System.out.println ("1- Para veiculos de passeio.\n"+"2- Para veiculos de carga.\n");
IN.setmenu (Integer.parseInt (Lt.entra ()));
if (IN.getmenu () == 1)
{
System.out.println ("Digite os dados dos veiculos de passeio: \n");
for (int i = 0; i < Cp.length; i++)
{
Cp[i] = new CarroPasseio ();
System.out.println ("Veiculo " +(i+1));
System.out.println ("Modelo do carro: ");
Cp[i].setmodelo (Lt.entra ());
System.out.println ("Potencia do carro: ");
Cp[i].setpotencia (Integer.parseInt (Lt.entra ()));
System.out.println ("Peso do carro: ");
Cp[i].setpeso (Integer.parseInt (Lt.entra ()));
System.out.println ("Velocidade maxima do carro: ");
Cp[i].setvelmax (Integer.parseInt (Lt.entra ()));
System.out.println ("Preco do carro: ");
Cp[i].setprecov (Double.parseDouble (Lt.entra ()));
System.out.println ("Cor do carro: ");
Cp[i].setcor (Lt.entra ());
System.out.println ("Numero de cilindros do carro: ");
Cp[i].setNumCilindro (Integer.parseInt (Lt.entra ()));
}
}
else if (IN.getmenu () == 2)
{
System.out.println ("Digite os dados dos veiculos de carga: \n");
for (int i = 0; i < Cm.length; i++)
{
Cm[i] = new Caminhao ();
System.out.println ("Veiculo " +(i+1));
System.out.println ("Numero de cilindros do caminhao: ");
Cm[i].setNumCilindro (Integer.parseInt (Lt.entra ()));
System.out.println ("Potencia do caminhao: ");
Cm[i].setpotencia (Integer.parseInt (Lt.entra ()));
System.out.println ("Peso do caminhao: ");
Cm[i].setpeso (Integer.parseInt (Lt.entra ()));
System.out.println ("Velocidade maxima do caminhao: ");
Cm[i].setvelmax (Integer.parseInt (Lt.entra ()));
System.out.println ("Preco do caminhao: ");
Cm[i].setprecov (Double.parseDouble (Lt.entra ()));
System.out.println ("Carga maxima do caminhao em toneladas: ");
Cm[i].setprecov (Double.parseDouble (Lt.entra ()));
System.out.println ("Altura maxima do caminhao: ");
Cm[i].setprecov (Integer.parseInt (Lt.entra ()));
System.out.println ("Comprimento do caminhao: ");
Cm[i].setprecov (Integer.parseInt (Lt.entra ()));
}
}
else
System.out.println ("Digite um numero valido!");
System.out.println ("\t\t######Cadastro terminado !######\n");
System.out.print ("Digite o numero do veiculo para consulta: ");
IN.setmenu (Integer.parseInt (Lt.entra ()));[/quote]
Galera, a situação no momento é a seguinte. Eu simplifiquei o código, acertando o switch. Também ajeitei para imprimir o veículo desejado. E coloquei parametros nos metodos para facilitar.
Funcionou certinho, mas apenas tendo um vetor de tamanho fixo pré definido para cadastrar. Ou seja, colocando vetor de tamano 5, cadastra 5 carros. 3 cadastra tres carros, e por aí vai. A única coisa que tá faltando é uma opção de escolher quantos carros serão cadastrados, e eu gostaria de apoio pra terminar esse programa.
Vejam como o programa está agora, mas tá dando erro no get, depois das alterações. Só falta ajeitar esse lance de vetor dinamico. Tipo assim: o usuário digita 5 e 5 carros serão cadastrados. Vejam o código:
[quote]public class Inicio
{
public static void main (String args [])
{
Leitura Lt = new Leitura ();
System.out.println ("\t###Bem vindo ao controle de vistorias de veiculos!###\n");
System.out.println (" *Entre com o tipo de veiculo para cadastrar e pressione enter ->");
int x = Integer.parseInt (Lt.entra ("1- Para veiculos de passeio.\n" + "2- Para veiculos de carga.\n"));
switch (x)
{
case 1:
int a = Integer.parseInt (Lt.entra ("Digite a quantidade de veiculos para cadastrar: "));
CarroPasseio Cp[] = new CarroPasseio [a];
System.out.println ("Digite os dados dos veiculos de passeio: \n");
for (int i = 0; i < Cp.length; i++)
{
Cp[i] = new CarroPasseio ();
System.out.println ("Veiculo " +(i+1));
Cp[i].setmodelo (Lt.entra ("Modelo do carro: "));
Cp[i].setpotencia (Integer.parseInt (Lt.entra ("Potencia do carro: ")));
Cp[i].setpeso (Integer.parseInt (Lt.entra ("Peso do carro: ")));
Cp[i].setvelmax (Integer.parseInt (Lt.entra ("Velocidade maxima do carro: ")));
Cp[i].setprecov (Double.parseDouble (Lt.entra ("Preco do carro: ")));
Cp[i].setcor (Lt.entra ("Cor do carro: "));
Cp[i].setNumCilindro (Integer.parseInt (Lt.entra ("Numero de cilindros do carro: ")));
}
break;
case 2:
int b = Integer.parseInt (Lt.entra ("Digite a quantidade de veiculos para cadastrar: "));
Caminhao Cm[] = new Caminhao [b];
System.out.println ("Digite os dados dos veiculos de carga: \n");
for (int i = 0; i < Cm.length; i++)
{
Cm[i] = new Caminhao ();
System.out.println ("Veiculo " +(i+1));
Cm[i].setNumCilindro (Integer.parseInt (Lt.entra ("Numero de cilindros do caminhao: ")));
Cm[i].setpotencia (Integer.parseInt (Lt.entra ("Potencia do caminhao: ")));
Cm[i].setpeso (Integer.parseInt (Lt.entra ("Peso do caminhao: ")));
Cm[i].setvelmax (Integer.parseInt (Lt.entra ("Velocidade maxima do caminhao: ")));
Cm[i].setprecov (Double.parseDouble (Lt.entra ("Preco do caminhao: ")));
Cm[i].setCargaMaxima (Double.parseDouble (Lt.entra ("Carga maxima do caminhao em toneladas: ")));
Cm[i].setAlturaMaxima (Integer.parseInt (Lt.entra ("Altura maxima do caminhao: ")));
Cm[i].setcomprimento (Integer.parseInt (Lt.entra ("Comprimento do caminhao: ")));
}
break;
default:
System.out.println ("Digite um numero valido!");
break;
}
System.out.println ("\t\t######Cadastro terminado !######\n");
int y = Integer.parseInt (Lt.entra ("Digite o numero do veiculo cadastrado para consultar os dados: "));
switch (x)
{
case 1:
System.out.println ("Modelo: " + Cp[y - 1].getmodelo ());
System.out.println ("Potencia: " + Cp[y - 1].getpotencia () + " cavalos");
System.out.println ("Peso: " + Cp[y - 1].getpeso () + " kg");
System.out.println ("Velocidade maxima: " + Cp[y - 1].getvelmax () + " km/h");
System.out.println ("Preco" + "R$ " + Cp[y - 1].getprecov ());
System.out.println ("Cor: " + Cp[y - 1].getcor ());
System.out.println ("Numero de cilindros: " + Cp[y - 1].getNumCilindro ());
break;
case 2:
System.out.println ("Numero de cilindros: " + Cm[y - 1].getNumCilindro ());
System.out.println ("Potencia: " + Cm[y - 1].getpotencia () + " cavalos");
System.out.println ("Peso: " + Cm[y - 1].getpeso () + " kg");
System.out.println ("Velocidade maxima: " + Cm[y - 1].getvelmax () + " km/h");
System.out.println ("Preco" + "R$ " + Cm[y - 1].getprecov ());
System.out.println ("Carga maxima: "+ Cm[y - 1].getCargaMaxima () + " toneladas");
System.out.println ("Altura maxima: " + Cm[y - 1].getAlturaMaxima () + " metros");
System.out.println ("Comprimento: " + Cm[y - 1].getcomprimento () + " metros");
break;
}
}[/quote]
No lugar de um vetor primitivo, use a classe List.
List<CarroPasseio> cpList = new ArrayList<CarroPasseio>();
Não precisa dizer o tamanho. O list redimensionará quando for necessário.
Depois, para adicionar um carro:
cpList.add(carroPasseio);
Para remover o carro:
cpList.remove(carroPasseio);
E para pegar um carro pelo índice:
cpList.get(0);
etc…
Dê uma pesquisada por Collections Framework. Já deve te ajudar.
Valeu de novo Vini.
Mas o caso é que o professor nosso, meio conservador, exige que seja feito o exercício usando o método tradicional. Consequentemente, eu não poderia usufruir dessa técnica mais funcional…
Conceitos de Tamanho Físico e Tamanho Lógico.
Seu professor, doidão por sua vez, não passou o MÁXIMO de registros permitidos (tamanho físico) ?
além de não permitir métodos dinâmicos…
então ele anda tomando muito jaba e não java
[]s
Se você sabe o tamanho do array, basta criar um vetor com esse amanho:
Carro[] vetorDeCarros = new Carro[tamanho];
Caso contrário, terá que redimensionar o vetor, caso atinja o limite máximo. Como isso não é possível, será necessário criar um novo vetor e copiar os dados do original.
Por exemplo, esse método de adicionar faz isso:
if (proximaPosicao == vetorDeCarros.size() {
Carro[] novoVetor = new Carro[vetorDeCarros.size() * 2]; //O dobro do antigo
System.arrayCopy(vetorDeCarros, 0, novoVetor, 0, vetorDeCarros.size());
vetorDeCarros = novoVetor;
}
//Agora que cabe no vetor, adicionamos o carro.
vetorDeCarros[proximaPosicao++] = carro;[/code]
Ok, obrigado.
Eu realmente detesto professores que não dominam a matéria e a estudam às pressas pra dar aula.