Duvidas em instanciar objetos de classes

olá, sou novato em programação java, estou aprendendo o básico e tenho um problema de biblioteca:

tenho uma classe Biblioteca em que se situam os vetores
-vetor de Livros [20]
-vetor de Revistas [20]
-vetor de Cds [20]
-vetor de Jornais [20]
-vetor de Alunos [10]
-vetor de Professores [10]

tal classe mexe com a classe material, das quais herdam os livros, revistas, cds, etc (isso eu fiz)

mas a classe main, tem que fazer a inclusao de dados e usar a classe biblioteca para manipular os vetores dos materiais ou de usuarios :frowning:

uma parte do meu programa:
biblioteca b;

do{
b = new biblioteca();

  System.out.println("Digite:\n1) para adicionar usuario\n2)Para adicionar materiais (livros,CD's,Revistas ou jornais)\n3)Para consultar usuario\n4)Para devolver material");
  System.out.println("Digite -1 para finalizar sistema");
  esc1 = scan.nextInt();
  switch(esc1){

  case 1:
    System.out.println("Digite:\n1)Para adicionar aluno\n2)para adicionar professor");
    esc2 = scan.nextInt();
      switch(esc2){
        case 1: //adicionar aluno
            for(i = 0; i < b.a.length; i++){
                System.out.println("Digite o nome do aluno");
                b.a[i].setNome(nome = scan.nextLine());

                System.out.println("Digite o codigo do aluno");
                b.a[i].setCodigo(codigo = scan.nextInt());

                System.out.println("Digite o curso do aluno");
                b.a[i].setCurso(curso = scan.nextLine());

                System.out.println("Digite o ano do aluno");
                b.a[i].setAno(ano = scan.nextInt());

///

classe biblioteca:

public class biblioteca {
livros l[] = new livros[20];
CD cds[] = new CD[20];
jornais j[] = new jornais[20];
revistas r[] = new revistas[20];
professor p[] = new professor[10];
aluno a[] = new aluno[10];

int i;

void relatorioAlunos(){
for(i = 0; i > a.length;i++){
System.out.println("Nome do aluno" + a[i].getNome());
}
}

public void relatorioProfessores(){
for(i = 0; i > p.length;i++){
System.out.println("Nome do professor" +p[i].getNome());

    }
}

Amigo, simplifique um pouco o código e diga qual seria a sua dúvida, não consegui entender o que você precisa!
Flws!

ok , desculpe, foi meu primeiro post

é que eu estou confuso em como mexer com uma classe que possui vetor de objetos,através da main, mas essa classe tem vetor de objeto de outra classe, entende?

é como mexer uma classe para mexer em outra

biblioteca b;
b = new biblioteca();

System.out.println(“Digite o codigo do aluno”);
b.a[i].setCodigo(codigo = scan.nextInt());

eu fiz essa lusitanagem , apesar de nao apontar erro , aponta erro em :

Exception in thread “main” java.lang.NullPointerException
at Main.main(Main.java:56)
Java Result: 1

a classe biblioteca possui os vetores de outras classes, como CD, revista e jornal , e para mexer na biblioteca tenho que mexer na main
main > biblioteca > cd/revista/jornal ,

classe biblioteca (um pco do codigo)

public class biblioteca {
livros l[] = new livros[20];
CD cds[] = new CD[20];
jornais j[] = new jornais[20];

não entedi mt bem a sua duvida …mas para criar um novo objeto da biblioteca seria assim:

biblioteca b = new biblioteca(); 

Rsrs, cara acho que vc ta bem confuso,

idependente do seu problema, que não consegui entender, rsrs
tenho 2 sugestoes,

1 =
implemente metodos getters e setters nas suas classes,
num eh uma boa pratica acessar os atributos direto

2 = quando for postar um código coloque entre as Tags = code e /code

eu adoraria saber quel é a linha 56…

mas, de qualquer forma, NPE, pode acontecer quando vc tenta acessar um objeto que não foi instanciado.

Ex:


Biblioteca b;

b.getLivros();

isso daria NPE, por que o objeto biblioteca não foi instanciado, e isso pode acontecer com qualquer objeto, como o seu objeto scan, por exemplo

entendi agora, é como se o objeto estivesse null, eu dei gets só não aparecem no codigo

mais uma coisa

é correto usar um objeto para acessar outro objeto de tal classe?

como se o objeto b da classe biblioteca acessasse outro objeto, por exemplo , o objeto l da classe livro
code System.out.println(“Digite o titulo do livro”);
b.l[i].setTitulo(titulo = scan.nextLine());/code

é viavel?

Cara, posta se codigo entre “code”, fica melhor para visualizar…;D

Claro que pode kra,

Imagina que vc tem um objeto Carro, e nesse objeto carro, um dos atributos seja sei lá, um objeto tipo Painel.

vc pode fazer:


Painel p = carro.getPainel();

não tem limites, só prestando atenção as boas práticas e conceitos de OO.