Seguinte, so novo, e to começando agora e to me interessando muitu por java, montei um programa que pega o nome, rg e poltrona que o usuário quer sentar e grava num arquivo txt…té aew, blz o programa ta rodando normal, tudo certo…soh que são 44 lugares e não consigo fazer esta consistência na poltrona para que não aceite o valor digitado para poltrona seja maior que 44…algum pode me dar uma idéia de como fazer issu mais ou menos, ja tentei de varios jeitos mas não consigo…
segue a classe…
import java.io.*;
public class Passageiro{
// Atributos
private String nome, rg;
private int poltrona;
public Passageiro(){}
public Passageiro(String nome, String rg, int poltrona){
this.nome = nome;
this.rg = rg;
this.poltrona = poltrona;
}
public String getNome() {
return nome;
}
public String getRg() {
return rg;
}
public int getPoltrona() {
return poltrona;
}
public void setNome(String aux){
if(aux != null){
if(aux.trim()!="")
this.nome = aux;
}
}
public void setRg(String aux) {
if(aux != null){
if(aux.trim()!="")
this.rg = aux;
}
}
public void setPoltrona(int aux){
if(aux > 0){
this.poltrona = aux;
}
}
public void insereNoArquivo(){
File f= new File("C:\\Trab Interdiciplinar","arq.txt");
try{
FileWriter fw = new FileWriter(f , true);
BufferedWriter escrita = new BufferedWriter(fw);
escrita.write(nome + " | ");
escrita.write(rg + " | ");
escrita.write(poltrona);
escrita.newLine();
escrita.close();
}
catch(IOException ex){
System.out.println("\n Prolemas com o arquivo");
}
}
// criar um metodo para imprimir os dados gravado no arquivo
public void imprime(){
}
}
Agora segue o programa que puxa os métodas da classe passageiro…
import javax.swing.JOptionPane;
import java.io.*;
public class UsaPassageiro{
static Passageiro[] aPassageiros = new Passageiro[5];
public static void main(String args[]){
// loop para pegar todos os passageiros
for(int i = 0; i < aPassageiros.length; i++){
String nome = JOptionPane.showInputDialog("Digite o nome");
String rg = JOptionPane.showInputDialog("Digite o rg");
int poltrona = 0; // inicio como poltrona = 0
while (poltrona == 0 || !poltronaLivre(poltrona)) // fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
poltrona = Integer.parseInt(JOptionPane.showInputDialog("Digite a poltrona"));
// crio o objeto passageiro (se preferir pode mudar o construtor pra já passar os parâmetros)
Passageiro p = new Passageiro(nome, rg, poltrona);
// adiciono o passageiro na minha lista de passageiros
aPassageiros[i] = p;
Passageiro obj = new Passageiro(nome, rg, poltrona);
obj.insereNoArquivo();
}
/*
// loop para imprimir todos os passageiros
for(int i=0;i<aPassageiros.length;i++){
System.out.println("Nome: " + aPassageiros[i].getNome());
System.out.println("Rg: " + aPassageiros[i].getRg());
System.out.println("Nome: " + aPassageiros[i].getPoltrona());
} */
}
/**
* Verifico se a poltrona de número p passada está livre, ou seja, se ela não pertence a nenhum outro passageiro
* ainda.
* @param p
* @return
*/
private static boolean poltronaLivre(int p){
for(int i = 0; i < aPassageiros.length; i++){
// como já configurei que o array terá 3 posições, ele percorre até 3, só quem nem sempre tem um passageiro na posição
// do array, a posição pode estar null, por isso tava dando aquele erro.
if ((aPassageiros[i] != null) && (p == aPassageiros[i].getPoltrona())){
//System.out.println("Poltrona ocupada!!!");
JOptionPane.showMessageDialog(null,"Poltrona ocupada");
return false;
}
}
return true;
}
}
Oi, bem-vindo ao GUJ!
Não use .txt como se fosse um banco de dados. É o caminho para um código longo, trabalhoso, cheio de erros e pouco eficiente. Informe-se sobre JDBC e bancos de dados, tem tutoriais sobre ele no GUJ (veja em ordem):
http://www.guj.com.br/java.tutorial.artigo.7.1.guj
http://www.guj.com.br/java.tutorial.artigo.115.1.guj
http://www.guj.com.br/java.tutorial.artigo.174.1.guj
Depois… sempre que for postar códigos, use a tag code. Assim fica mais fácil para a gente te ajudar. Se vc tem dúvidas de como usa-la, veja o link:
http://www.guj.com.br/posts/list/50115.java
public void setPoltrona(int aux){
if(aux > 0){
this.poltrona = aux;
}
este mew problema…creiu que seja aqui onde crio a condição da poltrona, mas não vonsigo faze-la, podem me ajudar…
Faça as validações com exceções:
[code]public void setPoltrona(int poltrona){
if(poltrona < 0 || poltrona > 44) {
throw new IllegalArgumentException("A poltrona deve estar entre 0 e 44!");
}
//Se passou pela validação
this.poltrona = poltrona;
}[/code]
Isso vale para a classe de negócio. Na sua tela, procure fazer uma interface que impessa o usuário de colocar um valor inválido. Como usar um ComboBox só com as poltronas disponíveis, por exemplo.