Sou novo, e tenho milhares de dúvidas!

Olá pessoal! :slight_smile:

Então, eu comecei a ter aula de java na faculdade faz 2 semanas, e eu curti muito a idéia então estou tentando aprender sozinho, e pra isso eu acabei lendo esse tópico:
http://www.guj.com.br/posts/list/99503.java#536039
Eu peguei o código que o rapaz coloca mais embaixo, e fiz algumas modificações mas eu tenho muitas duvidas do que se trata a maioria das coisas(foi por puro instinto).

Eu queria saber o que significa:

[code]if b break;

		boolean achou = false;
		
		for (int i = 0; i  < dvds.length; ++i) {
			if (achou = [b]s.equalsIgnoreCase(dvds[i].getSala()))[/b]{[/code]

O que está acontecendo ai?
Eu consigo entender que "se apertar o x, da break na primeira linha.
A ultima linha eu não entendi direito, ele faz um teste para ver o que?

“s.equalsIgnoreCase” o que esse comando faz? No código completo, quando roda, ele só mostra 1 dos inúmeros “dvds” do mesmo genero, ou seja, se têm mais de um, ele simplismente não mostra, ai pra isso eu coloquei uma linha desse tipo, e ficou mais ou menos assim essa parte do programa:

[code] for (int i = 0; i < dvds.length; ++i) {
if (achou = s.equalsIgnoreCase(dvds[i].getSala())){

				Saida = Saida + dvds[i].getNome() + " - " + dvds[i].getCurso() + "\n"; 
				
				JOptionPane.showMessageDialog(null, " " + Saida);

if (!achou)
JOptionPane.showMessageDialog(null, “Não encontrado”);
}

			}
		}[/code]

Sendo que a saida eu defini como do tipo string " ". Eu andei pensando, e se eu tirar o “if” e colocar assim:

Definir a variavel saida como “Não encontrado” ai quando fizer o for, fazer sei lá, um - " não encontrado", da pra fazer isso? Por exemplo, eu tiraria o ShowMessageDialog do for, e colocaria ele fora, ou seja, ele sempre mostraria a variavel saida, independendo do seu conteudo. Mas ai tem uma questão, se da pra “subtrair” strings, no for, quando ele não tiver mais o “Não encontrado”(quando ele for mostrar mais de um resultado, o primeiro já vai ter tirado o não encontrado) o programa vai surtar?

PEssoal me ajuda, to perdidissimo :frowning:

Aqui está o código inteiro, com algumas modificações que eu fiz pra entender o que acontece:

[code]import javax.swing.JOptionPane;

public class Main {

public static void main(String[] args) {
	Dvd[] dvds = new Dvd[3];
	 String Saida = " ";
	// insere
	for (int i = 1; i <= 3; ++i) {
		Dvd dvd = new Dvd();
		
		dvd.setId(i);
		dvd.setNome(JOptionPane.showInputDialog("Nome do aluno: "));
		dvd.setCurso(JOptionPane.showInputDialog("Curso: "));
		dvd.setSala(JOptionPane.showInputDialog("Sala: "));
		
		dvds[i -1] = dvd; 
	}

	// pesquisa
	while (true) {
		String s = JOptionPane.showInputDialog("Digite o nome da sala");
		
		if (s.equalsIgnoreCase("x")) break;
		
		boolean achou = false;
		
		for (int i = 0; i  < dvds.length; ++i) {
			if (achou = s.equalsIgnoreCase(dvds[i].getSala())){
				
				Saida = Saida + dvds[i].getNome() + " - " + dvds[i].getCurso() + "\n"; 
				
				JOptionPane.showMessageDialog(null, " " + Saida);
				
			}
		}
		
		if (!achou)
			JOptionPane.showMessageDialog(null, "Não encontrado");
	}
}

}
[/code]

e

[code] public class Dvd {

    private int id;  
    private String Nome;  
    private String Curso;  
    private String Sala; 
    private String Saida;
      
    public Dvd() {}  
     
   public Dvd(String curso, String sala, int id, String nome) {  
       super();  
       this.Curso = curso;  
       this.Sala = sala;  
       this.id = id;  
       this.Nome = nome;  
   }  
 
   /** 
  1.  * @return the id 
    
  2.  */  
    

    public int getId() {
    return id;
    }

    /**

  3.  * @param id the id to set 
    
  4.  */  
    

    public void setId(int id) {
    this.id = id;
    }

 /** 
  1.  * @return the Nome 
    
  2.  */  
    
    public String getNome() {
    return Nome;
    }
    /**
  3.  * @param Nome the Nome to set 
    
  4.  */  
    
    public void setNome(String Nome) {
    this.Nome = Nome;
    }
 /** 
  1.  * @return the curso 
    
    */
    public String getCurso() {
    return Curso;
    }
/** 
  1.  * @param curso the curso to set 
    
  2.  */  
    
public void setCurso(String curso) {  
    this.Curso = curso;  
}  

/**
61. * @return the sala
62. */
public String getSala() {
return Sala;
}

 /** 
  1.  * @param Sala the Sala to set 
    
  2.  */  
    
public void setSala(String Sala) {  
      this.Sala = Sala;  
}  }

[/code]

[quote=Ricardo Prado]Olá pessoal! :slight_smile:

Então, eu comecei a ter aula de java na faculdade faz 2 semanas, e eu curti muito a idéia então estou tentando aprender sozinho, e pra isso eu acabei lendo esse tópico:
http://www.guj.com.br/posts/list/99503.java#536039
Eu peguei o código que o rapaz coloca mais embaixo, e fiz algumas modificações mas eu tenho muitas duvidas do que se trata a maioria das coisas(foi por puro instinto).

Eu queria saber o que significa:

[code]if b break;

		boolean achou = false;
		
		for (int i = 0; i  < dvds.length; ++i) {
			if (achou = [b]s.equalsIgnoreCase(dvds[i].getSala()))[/b]{[/code]

O que está acontecendo ai?
Eu consigo entender que "se apertar o x, da break na primeira linha.
A ultima linha eu não entendi direito, ele faz um teste para ver o que?
[/quote]
break faz com que o programa saia de dentro de uma estrutura iterativa, um loop. seja ele um while, um for ou um do…while. Também serve pra sair da estrutura de controle de fluxo switch…case

Se ele apertar X maiusculo ou minúsculo, ele sai da estrutura.

No próximo, ele executa o método getSala do objeto que se encontra na posição i do vetor dvds. Depois ele compara o retorno desse método com aquele s. Se ambos forem iguais, ignorando a caixa do texto, o método equalsIgnoreCase retorna true. caso contrário, false. Com esses valores booleanos o if é executado, ou não.

[quote=Ricardo Prado]
“s.equalsIgnoreCase” o que esse comando faz? No código completo, quando roda, ele só mostra 1 dos inúmeros “dvds” do mesmo genero, ou seja, se têm mais de um, ele simplismente não mostra, ai pra isso eu coloquei uma linha desse tipo, e ficou mais ou menos assim essa parte do programa:

[code] for (int i = 0; i < dvds.length; ++i) {
if (achou = s.equalsIgnoreCase(dvds[i].getSala())){

				Saida = Saida + dvds[i].getNome() + " - " + dvds[i].getCurso() + "\n"; 
				
				JOptionPane.showMessageDialog(null, " " + Saida);

if (!achou)
JOptionPane.showMessageDialog(null, “Não encontrado”);
}

			}
		}[/code]

Sendo que a saida eu defini como do tipo string " ". Eu andei pensando, e se eu tirar o “if” e colocar assim:

Definir a variavel saida como “Não encontrado” ai quando fizer o for, fazer sei lá, um - " não encontrado", da pra fazer isso? Por exemplo, eu tiraria o ShowMessageDialog do for, e colocaria ele fora, ou seja, ele sempre mostraria a variavel saida, independendo do seu conteudo. Mas ai tem uma questão, se da pra “subtrair” strings, no for, quando ele não tiver mais o “Não encontrado”(quando ele for mostrar mais de um resultado, o primeiro já vai ter tirado o não encontrado) o programa vai surtar?

PEssoal me ajuda, to perdidissimo :([/quote]

Se você explicar melhor a gente entende, mas tente não complicar :slight_smile: Procure a solução mais simples que você puder pensar.

quando ele faz String s = JOptionPane.showInputDialog("Digite o nome da sala"); ele define uma variavel do tipo String s como o nome da sala que eu procurei dai quando ele faz achou = s.equalsIgnoreCase(dvds[i].getSala())){ ele faz uma comparação se s (que é a sala) tem valor igual a algum “(dvds[i].getSala)”, que eu imagnio que funcione assim:
O dvds[i] é o número do dvd, e ai ele pega a sala desse dvd. por exemplo, no começo da varredura ele substitui os valores algo assim:
dvds[1].getSala dai ele substitui(rodando o comando getSala do dvds[1] e retorna o valor da sala da sala, ai nesse caso, quando isso acontece a linha “ficaria” assim

achou = s.equalsIgnoreCase("Nome da sala"))) 

ta certo isso? ou chapei nas idéias?

É isso mesmo.

Mais algumas dúvidas:

Aquele loop não está funcionando direito, eu dei uma ajeitada nele mas mesmo assmi primeiro ele mostra 1 resultado, depois 2, depois 3(se os 3 forem da mesma ‘Sala’)

Eu queria mostrar os 3 juntos, mas não estou conseguindo.

Eu tambem vi em um livro que arrays só podem ser criados com tamanho especificado, então para conseguir inserir um novo aluno, eu teria que copiar o array antigo inteiro, criar outro com x+1 espaços(x = número de espaços no array anterior) e inserir os dados do ultimo aluno, no novo espaço do array.

Como faz isso? Eu to tentando aqui mas ta complicado ehehhe. Existe outra maneira de fazer isso?

Como faz para eu salvar os dados que eu insiro em algum tipo de arquivo e o programa ler depois?

E em que parte do livro eu acho como fazer um botão?(no caso seria para inserir novos alunos) To com o livro de um tal de Deitel, falaram que é bom, mas eu geralmente não sei aonde encontrar o que eu quero!

[quote=Ricardo Prado]Mais algumas dúvidas:

Aquele loop não está funcionando direito, eu dei uma ajeitada nele mas mesmo assmi primeiro ele mostra 1 resultado, depois 2, depois 3(se os 3 forem da mesma ‘Sala’)

Eu queria mostrar os 3 juntos, mas não estou conseguindo.[/quote]

Aquele código tem uns erros mesmo. Se eu fosse você, eu tentaria fazer o meu próprio programa, e assim entenderia mais fácil o que está acontecendo. Com certeza você vai fazer isso mais rápido que tentar arrumar o código dele.

[quote=Ricardo Prado]Eu tambem vi em um livro que arrays só podem ser criados com tamanho especificado, então para conseguir inserir um novo aluno, eu teria que copiar o array antigo inteiro, criar outro com x+1 espaços(x = número de espaços no array anterior) e inserir os dados do ultimo aluno, no novo espaço do array.

Como faz isso? Eu to tentando aqui mas ta complicado ehehhe. Existe outra maneira de fazer isso?[/quote]

Bem, para começar, se desde o começo você estivesse planejando em aumentar a qtd de objetos dentro do array, você não escolheria um array para isso, e sim uma classe como a ArrayList, que faz isso automaticamente. Mas se ainda realmente quiser fazer uma cópia de arrays, existe o método System.arraycopy. Então, faça do jeito certo e use o ArrayList. Se tiver no livro do Deitel, tá na parte de Collections.

É um pouco mais complicado. Primeiro você tem que definir em que formato você vai guardar os dados. Eu recomendo CSV(valores separados por vírgula). O resto envolve o método write da classe FileWriter.

Não tenho esse livro, mas botão geralmente é com a classe JButton. Veja se tem ela no índice do livro.

Bem, como isso é bastante coisa pra fazer, vá aos poucos, tenha certeza tudo está funcionando antes de ir para um próximo passo.

Eu peguei o programa dele, pq eu simplismente não tenho noção de nada hehehe, po tive 4 aulas de java na minha vida, eu precisava de alguma coisa pra eu dissecar! Vou procurar tudo que vc está falando e quando terminar de olhar respondo :slight_smile:
vlw mesmo :smiley:

EDIT: To olhando aqui no livro e ele disse “arrayList is typically preferred over Vector in programs that do not share a collection among threads” o que ele quis dizer com isso? Ele fala de um tal de “Vector method”, que tem uams coisas como addElement.

Não seria essa a melhor escolha?(esse tal de vector)

Se quiser dê uma olhada nas apostillas da Caelum, em especial a “Java e Orientação a Objetos”. São ótimas.

[quote=Ricardo Prado]EDIT: To olhando aqui no livro e ele disse “arrayList is typically preferred over Vector in programs that do not share a collection among threads” o que ele quis dizer com isso? Ele fala de um tal de “Vector method”, que tem uams coisas como addElement.

Não seria essa a melhor escolha?(esse tal de vector)[/quote]

Não. ArrayList é melhor. Vector é usado em programação concorrente e paralela, onde o programa executa diversas coisas ao mesmo tempo. É um tópico bem avançado e complicado, então deixe de lado.

O programa qeu eu quero fazer, que claro não tem um prazo menor que 6 meses pra ficar pronto é um programa que faça isso:

Sistema de controle de eventos

  • Lista de atividades
  • Inscricoes para atividades (palestra, minicurso, mesa redonda)
  • Alocação de Sala
  • Controle de acesso ao sistema(ADM)
  • Controle presenca por atividade
  • Relatorio de ocupação da sala
  • Emissão de certificado
  • Cadastro do palestrante
  • Site de divulgação
  • Controlde lista de espera
  • Cadastrar informações da Sala
  • Control ede recursos audiovisual
  • Planejar o horário do evento
  • Cadastro de mini curriculo
  • Definir formato do evento

Então to começando a caminhar pra ver o que faz o que ehhehe

Tá certo…tem que correr atrás mesmo…

Mas dê um passo de cada vez…

Vc já conhece alguma outra linguagem?? Tem experiência com programação??

Se sim…td bem…então vc já sabe o que cada comandao faz e talz…mas senão…fica difícil…

Mas boa sorte no seu projeto…qualquer coisa…o pessoal do GUJ vai te ajudar…

=)

Só mais uma coisas: pelo que lhe é sagrado nao use arrays. Use coleções. O codigo é mais simples, legivel e portanto tem menos bugs

EU ODEIO ARRAYS…

Peguei DP na facul por causa disso…

=(

Maldito Array!

Por favor coloque títulos em seus tópicos que tenha relação com suas dúvida!