Pessoal, sou iniciante em java e tenho uma dúvida besta
Como faço para verificar se já existe um numero no vetor[20]
for(i=0;i<20;i++){
num[i] = Integer.parseInt(JOptionPane.showInputDialog(“Digite um número”));
}
Pessoal, sou iniciante em java e tenho uma dúvida besta
Como faço para verificar se já existe um numero no vetor[20]
for(i=0;i<20;i++){
num[i] = Integer.parseInt(JOptionPane.showInputDialog(“Digite um número”));
}
Eu acho que você já fez o mais difícil, para ver se é um número, podes usar um laço try/catch usando os métodos da classe Integer ou Double. Dê uma olhadinha na documentação e caso tenha alguma dificuldade, te ajudo nisso.
Até!
Mas a pergunta era se "existe o número" não se "é um número", ou eu que viajei?! :shock:
Bom, para verificar se é um número vc deve fazer como sugeriu o maquiavel.
Seguindo sua idéia, para verificar se o número está no vetor, pode ser assim (usando a sua idéia inicial):
int numero = Integer.parseInt(JOptionPane.showInputDialog("Digite um número"));
for(int i = 0; i < 5; i++){
if (num[i] == numero)
System.out.println("é igual");
}
Perguntou se existe um número(tipo), não se existe um número específico (objeto).
Ai como a língua lusitana nos falta!
Até!
Na verdade, preciso montar uma condição simples:
Obs: estou fazendo um trabalho da faculdade que envolve manipulação de arquivo, métodos e objetos, conforme tenho uma dúvida solicito ajuda.
Estou grato pelas dicas e orientações.
Na verdade, preciso montar uma condição simples:
- Tenho um vetor[20] do tipo inteiro
- Quando usuário digitar um numero e esse número não existir no vetor, o sistema permite cadastrar o código do produto, senão envia uma mensagem que já existe código do produto cadastrado.
Obs: estou fazendo um trabalho da faculdade que envolve manipulação de arquivo, métodos e objetos, conforme tenho uma dúvida solicito ajuda.
Estou grato pelas dicas e orientações.
produto x= new Produto();
*getNumero_produto()-> este metodo tem de retornar o numero do produto ou seja tens de ter um atributo para o numero do produto
Creio que eu tenha entendido como a Renata, e acho que a maneira mais fácil de você entender, já que está começando é pelo código dela, se o número (código), for igual a algum cadastrado, exibe uma mensagem adequada, lembrando de percorrer o vetor do começo ao fim (0 a 19).
ai e o k foi que eu postei?
só entropia :oops:
Ops! Eu usei um vetor com 5 elementos pra testar e acabei colocando o código pra ele desse jeito… foi mal… :oops:
Ops! Eu usei um vetor com 5 elementos pra testar e acabei colocando o código pra ele desse jeito… foi mal… :oops:
ah manda mal pra mim tb… :oops: :oops: :oops: :oops:
RenataFA, Alkamavo e Thiago Domingues obrigado pelas dicas e idéias de vocês, aproveitando, tenho um exemplo claro do que preciso.
1) Só posso vender uma passagem se e somente a mesma não estiver ocupadapublic class passageiro{
//Atributos
private String nome, rg;
private int poltrona;
//Metodos de acesso getXxx
public String getNome() {
return nome;
}
public String getRg() {
return rg;
}
public int getPoltrona() {
return poltrona;
}
//Metodos de acesso setXxx
public void setNome(String n) {
nome = n;
}
public void setRg(String r) {
rg = r;
}
public void setPoltrona(int p) {
poltrona = p;
}
}
import javax.swing.*;
public class usaPassageiro {
public static void main(String args[]){
int i;
passageiro p = new passageiro();
String aux_nome[] = new String[20];
String aux_rg[] = new String[20];
int aux_poltrona[] = new int[20];
for(i=0;i<20;i++)
{
aux_nome[i] = JOptionPane.showInputDialog("Digite o nome");
aux_rg[i] = JOptionPane.showInputDialog("Digite o rg");
aux_poltrona[i] = Integer.parseInt(
JOptionPane.showInputDialog("Digite a poltrona"));
p.setNome(aux_nome[i]);
p.setRg(aux_rg[i]);
p.setPoltrona(aux_poltrona[i]);
}
for(i=0;i<3;i++)
{
System.out.println("Nome: " + p.getNome());
System.out.println("Rg: " + p.getRg());
System.out.println("Nome: " + p.getPoltrona());
}
}
}
Acredito que ficou mais claro agora.
Att.
Sérgio
Ok, vamos tentar fazer vc "andar" mais um pouco no seu projetinho.
Uma dica: Use sempre nome de classes com a primeira letra em maiúscula. É um padrão de nomenclatura seguido, fica melhor.
Bem, agora vamos as suas classes:
- mantenha sua classe passageiro
- mude sua classe main para algo parecido com o exemplo que coloquei abaixo
import javax.swing.JOptionPane;
public class usaPassageiro{
// array para armazenar seus passageiros
static passageiro[] aPassageiros = new passageiro[20];
public static void main(String args[]){
// loop para pegar todos os passageiros
for(int i=0;i<20;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();
p.setNome(nome);
p.setRg(rg);
p.setPoltrona(poltrona);
// adiciono o passageiro na minha lista de passageiros
aPassageiros[i] = p;
}
// 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++){
if (p == aPassageiros[i].getPoltrona()){
System.out.println("Poltrona ocupada!!!");
return false;
}
}
return true;
}
}
Olha, na sinceridade, não tive tempo de testar, mas veja que deve ser algo por ai.
É possivel converter um array em uma lista e, assim, verificar se contem algum elemento:
import java.util.Arrays;
public class A{
public static void main (String... x){
Integer y[] = new Integer[]{1,2,3};
System.out.println("contem 3? " + Arrays.asList(y).contains(3));
System.out.println("contem 5? " + Arrays.asList(y).contains(5));
}
}
$ java A
contem 3? true
contem 5? false
[quote=everson_z]
/** * 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){ ... return true; } }Isso esta certo?
@param p
:?:
Vc se refere ao @param p ?
Qual o problema com ele? Pq não estaria certo?!
Não everson!
Eu criei isso ai correndo só pra criar um exemplo pro nosso amigo com problema. Eu NUNCA criaria uma variável com o nome de “p”. Eu não fiz comentários adequados, eu apenas digitei /**<enter> (para escrever o comentário) e o Eclipse colocou o resto sozinho.
Eu não estava ensinando ngn a fazer comentários adequados e não programei esse trechinho de código pensando em como ficaria a documentação. Eu nem salvei isso ai, só fiz na IDE pra ficar mais alinhado e evitar erro de sintaxe!
O eclipse tem a mani de criar isso para incentivar os newbissimos a criar Documentação…basta criares uma nova class e akilo aprece sempre…
Pessoal, estou começando minha caminhada em orientação a objetos, para ser sincero estou utilizando o JCreator para desenvolver os trabalhos e pretendo me aprofundar cadas vez mais em Java.
Exception in thread “main” java.lang.NullPointerException
at usaPassageiro.poltronaLivre(usaPassageiro.java:47)
at usaPassageiro.main(usaPassageiro.java:16)
Não sei se é nessa linha
// fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
while (poltrona == 0 || !poltronaLivre(poltrona))
Também estou desenvolvendo uma classe para inserir no arquivo, depois vou postar aqui para saber opnião de vocês que conhencem e tem vivência em programação.
Grato
Sérgio
Esqueci de uma consistência. Tente agora:
import javax.swing.JOptionPane;
public class UsaPassageiro{
static Passageiro[] aPassageiros = new Passageiro[20];
public static void main(String args[]){
// loop para pegar todos os passageiros
for(int i=0;i<20;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;
}
// 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á 20 posições, ele percorre até 20, 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!!!");
return false;
}
}
return true;
}
public static 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 nome) {
this.nome = nome;
}
public void setRg(String rg) {
this.rg = rg;
}
public void setPoltrona(int poltrona) {
this.poltrona = poltrona;
}
}
}
RenataFA, obrigado pela ajuda, só daqui um tempo vou ser seu concorrente hein!!!!! brincadeira
É que cada vez estou gostando mais de Java.
Criei esse método para inserir em um arquivo, seria mais ou menos isso mesmo?
public static void insereNoArquivo(String nome, String rg, int poltrona){
File f= new File("arq.txt");
try{
FileWriter fw = new FileWrite(f);
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");
}
}
OLha, aparentemente é isso msm. Vc testou? Está gravando?
Nas suas primeiras mensagens vi que você vai precisar saber também se um assento é na janela ou corredor, certo?
Normalmente, assentos com número impar são na janela, logo tudo o que você precisa fazer é verificar se o número do assento é par o ímpar.
Para te dar uma dica, o operador % retorna o resto da divisão de dois inteiros.
int resto = n1%n2;
Se você verificar o resto dividindo o número da poltrona por 2, fica fácil saber se o número é par ou ímpar. O resto é lição de casa 
Cassio é isso mesmo, tenho que emitir um relatório informando se a poltrona é janela ou corredor.
Os métodos sets da vida servem para validar os dados, e estou pensando em validar isso na classe Passageiro
public void setPoltrona(int poltrona) {
if((num%2)==0)
System.out.println("Poltrona: Corredor");
else
System.out.println("Poltrona: Janela"
this.poltrona = poltrona;
}
Com isso, acredito que resolvi esse problema ou será que tem como melhorar isso?
RenataFA, ainda não testei o método insereNoAquivo, trabalho em dois emprego e ta …
Cassio é isso mesmo, tenho que emitir um relatório informando se a poltrona é janela ou corredor.Os métodos sets da vida servem para validar os dados, e estou pensando em validar isso na classe Passageiro
public void setPoltrona(int poltrona) { if((num%2)==0) System.out.println("Poltrona: Corredor"); else System.out.println("Poltrona: Janela" this.poltrona = poltrona; }Com isso, acredito que resolvi esse problema ou será que tem como melhorar isso?
RenataFA, ainda não testei o método insereNoAquivo, trabalho em dois emprego e ta …
A principio está ok sim 
Pessoal, criei o método inseriNoArquivo conforme classe abaixo
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 nome) {
this.nome = nome;
}
public void setRg(String rg) {
this.rg = rg;
}
public void setPoltrona(int poltrona) {
if((poltrona%2)==0)
System.out.println("Poltrona: corredor");
else
System.out.println("Poltrona: janela");
this.poltrona = poltrona;
}
// Criei esse método para inserir os dados dos atributos no arquivo, compilo a classe sem problemas
public static void insereNoArquivo(String nome, String rg, int poltrona){
File f= new File("C:\Trab Interdiciplinar","arq.txt");
try{
FileWriter fw = new FileWriter(f);
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");
}
}
}
Porém no método main, quando compilo apresenta erro no método inseriNoArquivo, conforme classe abaixo
import javax.swing.JOptionPane;
import java.io.*;
public class UsaPassageiro{
static Passageiro[] aPassageiros = new Passageiro[3];
static Passageiro[] inseriArquivo = new Passageiro[3];
public static void main(String args[]){
// loop para pegar todos os passageiros
for(int i=0;i<3;i++){
String nome = JOptionPane.showInputDialog("Digite o nome");
String rg = JOptionPane.showInputDialog("Digite o rg");
int poltrona = 0; // inicio como poltrona = 0
// fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
while (poltrona == 0 || !poltronaLivre(poltrona))
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;
}
// 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());
}
// chamo o método
insereNoArquivo(aPassageiros);
}
/**
* 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;
}
}
Quando compilo, apresenta erro conforme abaixo:
C:\Trab Interdiciplinar\UsaPassageiro.java:32: cannot find symbol
symbol : method insereNoArquivo(Passageiro[])
location: class UsaPassageiro
insereNoArquivo(aPassageiros);
Você que tem vivência em programação, será que está errado a maneira de chamar o método
inserePassageiro() é um método que vc declarou dentro da classe Passageiro, mas voc^e está chamando este método de dentro da classe UsaPassageiro(), a qual não tem esse método. Para poder fazer algo assim, você precisaria de um objeto da classe Passageiro e através deste objeto chamaria o método inserePassageiro().
Cassio, temos:
Passageiro p = new Passageiro(nome, rg, poltrona);
Fiz isso na classe UsaPassageiro, utilizando o método inseriNoArquivo da classe Passageiro
inseriNoArquivo§
Depois compilei e apresentou erro de compilação também
Inclui o método inseriNoArquivo na classe UsaPassageiro e também apresentou erro de compilação
Será que é isso mesmo? o erro
Coloca o código e o stacktrace do erro aqui.
Cassio, estou compilando no JCreator e o erro é este abaixo:
C:\Trab Interdiciplinar\UsaPassageiro.java:32: cannot find symbol
symbol : method insereNoArquivo(Passageiro[])
location: class UsaPassageiro
insereNoArquivo(aPassageiros);
Criei esse objeto
Passageiro obj = new Passageiro(nome, rg, poltrona)
Chamei o método insereNoArquivo
insereNoArquivo(obj)
import javax.swing.JOptionPane;
import java.io.*;
public class UsaPassageiro{
static Passageiro[] aPassageiros = new Passageiro[3];
public static void main(String args[]){
// loop para pegar todos os passageiros
for(int i=0;i<3;i++){
String nome = JOptionPane.showInputDialog("Digite o nome");
String rg = JOptionPane.showInputDialog("Digite o rg");
int poltrona = 0; // inicio como poltrona = 0
// fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
while (poltrona == 0 || !poltronaLivre(poltrona))
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;
insereNoArquivo( aPassageiros);
}
// 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;
}
}
Agora que eu vi, vc criou o seu método insereNoArquivo como um método estático da classe passageiro.
Você tem que invocar esse método a partir da CLASSE passageiro, como o método é estático, vc não precisa criar um objeto. Mas também não pode simplesmente chamar o metodo sem relacioná-lo com a classe, porque o compilador não vai achar (a não ser que vc estivesse invocando o método de dentro da mesma classe na qual ele foi declarado).
O certo seria
Passageiro.insereNoArquivo(seuObjetoDaClassePassageiro);
Cassio, fiz isso que você disse e o erro continua, será que eu vou ter que criar a classe File no método main e atribuir os dados do objeto no arq.txt
Passageiro.insereNoArquivo(seuObjetoDaClassePassageiro);
Pelo que eu entendi, insereNoArquivo é um método da classe passageiro, então, invés de:
Passageiro obj = new Passageiro(nome, rg, poltrona)
insereNoArquivo(obj)
Faça:
Passageiro obj = new Passageiro(nome, rg, poltrona)
obj.insereNoArquivo()
Claro que vc terá que modificar um pouquinho seu método insereNoArquivo, invés dele receber por parâmetro o passageiro que deve inserir, ele já está nesse passageiro, basta que vc pegue as informações que precisa (nome, rg e poltrona) dos atributos da classe passageiro, onde vc está com o método insereNoArquivo().
Será que consegui explicar?! :roll:
na declaração de seu vetor:
static Passageiro[] [color=red]aPassageiros = new Passageiro[3];[/color] //vetor com 3 objetos do tipo Passageiro
na declaração do seu método insereNoArquivo:
public static void insereNoArquivo([color=green]String nome, String rg, int poltrona[/color]) // insereNoArquivo([color=green]String, String, int[/color])
{
//...
}
na chamada do seu método insereNoArquivo:
insereNoArquivo([color=red]aPassageiros[/color]); //insereNoArquivo([color=red]vetor com 3 objetos do tipo Passageiro[/color])
voce quer inserir todos os passageiros de uma vez, sendo que seu método só insere 1 passageiro.
public static void insereNoArquivo(Passageiro[] vPass){
File f= new File("C:\Trab Interdiciplinar","arq.txt");
try{
FileWriter fw = new FileWriter(f);
BufferedWriter escrita = new BufferedWriter(fw);
for(int i = 0; i < vPass.length(); i++){
escrita.write(vPass[i].nome);
escrita.write(vPass[i].rg);
escrita.write(vPass[i].poltrona);
escrita.newLine();
}
escrita.close();
}
catch(IOException ex)
{
System.out.println("\n Prolemas com o arquivo");
}
}
onde vPass seria o seu vetor de passageiros aPassageiro;
veja que no seu erro:
C:\Trab Interdiciplinar\UsaPassageiro.java:32: cannot find symbol
symbol : method insereNoArquivo(Passageiro[])
ele nao acha o método insereNoArquivo() tendo como parâmetro um vetor de Passageiro.
nao compilei, mas creio que o erro de lógica seja esse.
Pessoal, tenho tido ajuda de vocês aqui doForum, principalmente da Renata e desde já agradeço pelas dicas e idéias.
Estou com outro problema no método abaixo:
public void insereNoArquivo(){
File f= new File("C:\Documents and Settings\Administrador\
Meus documentos\Interdiciplinar","arquivo.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");
}
}
Passageiro obj = new Passageiro(nome, rg, poltrona);
obj.insereNoArquivo();
sergio | 12345 |
fulano | 65432 |
Tenho os atributos do tipo String nome, String rg, int poltrona
Alguem tem uma idéia como faço para gravar no arquivo int.
Ué?!
Não sabia que não gravava o int! :shock:
Bom, tenta assim:
escrita.write(String.valueOf(poltrona));
Renata mais uma vez obrigado, sempre ajudando na lógica.
Fiz algumas consistências nos metodos sets
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)
JOptionPane.showMessageDialog(null,
"Poltrona deve ser maior que zero");
if((aux%2)==0)
System.out.println("Poltrona: corredor");
else
System.out.println("Poltrona: janela");
this.poltrona = aux;
}
Tem outras formas na classe UsaPassageiro para tratar os dados
1) Não aceitar valores negativos na poltrona
2) Se o usuário clicar no botão cancelar o sistema não apresentar erro
3) Obrigar o usuário digitar nome, rg e poltrona apresentar mensagem tipo "Nome obrigatório"
Renata mais uma vez obrigado, sempre ajudando na lógica.Não use String == String como você faz emFiz algumas consistências nos metodos sets
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; } } ...
if(aux.trim()!= "")
if( ! aux.trim().equals("")) ;
Certo, e qual a sua dúvida sobre essas consistências. Tentou fazê-las?
Ah, e use a dica do amigo sobre comparações de Strings 
Mark_Ameba, obrigado pela dica, alteração realizada com sucesso.
Renata, estou tentando colocar só mais uma consistência.
Tenho 20 poltronas, se o usuário digitar poltrona negativa (-10) o sistema apresentar crítica ou maior que vinte o sistema apresentar crítica também.
A classe tá assim
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");
// inicio como poltrona = 0
int poltrona = 0;
// fico pedindo a poltrona até que ela seja diferente de 0 e desocupada
while (poltrona == 0 || !poltronaLivre(poltrona))
poltrona = Integer.parseInt(JOptionPane.showInputDialog("Digite a poltrona"));
// crio o objeto passageiro
Passageiro p = new Passageiro(nome, rg, poltrona);
// adiciono o passageiro na minha lista de passageiros
aPassageiros[i] = p;
p.insereNoArquivo();
p.PoltronaJanela();
p.PoltronaCorredor();
}
}
/* Verifico se a poltrona de número p passada está livre, ou seja,
* se ela não pertence a nenhum outro passageiro*/
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())){
JOptionPane.showMessageDialog(null,"Poltrona ocupada");
return false;
}
}
return true;
}
}
Já sei! Muda o nome do método poltronaLivre pra poltronaValida. Ai vc modifica o método assim:
private static boolean poltronaValida(int p){
// acrescentei esse trecho
if ((p <= 0) || (p > 20)){
JOptionPane.showMessageDialog(null,"Poltrona inválida");
return false;
}
//
for(int i = 0; i < aPassageiros.length; i++){
if ((aPassageiros[i] != null) && (p == aPassageiros[i].getPoltrona())){
JOptionPane.showMessageDialog(null,"Poltrona ocupada");
return false;
}
}
return true;
}
Estou grato a todos vocês aqui do GUJ, postei um projetinho aqui, e conforme vinha uma dúvida eu postava minha dúvida e em seguida vinha solução.
Daqui um tempinho vou ajudar os iniciantes desse forum também.
Valeu pessoal
Isso esta certo?
@param p
:?:
Vc se refere ao @param p ?
Qual o problema com ele? Pq não estaria certo?!
É bem off
Na documentação, como você saberia o que é o (p) ? Seu IDE cria automático o tipo?
* ...
* @param p int
* @return
*/