Próximas partes do exercício:
:arrow: Crie uma classe Dvd somente com os atributos código, titulo, gênero e cópias. Todos privados, não estáticos.
:arrow: Declare uma List de Dvd dentro do método main, e a instacie com ArrayList
:arrow: Instancie um Dvd e grave as informações nele com setters.
:arrow: Adicione o Dvd à List.
:arrow: Crie na classe Dvd um método toString, sobrepondo o toString da classe Object.
:arrow: Imprima a lista ao final do método main
:arrow: Mova o método main para fora da classe Dvd.
cara, esse erro agora ta dando pq provavelmente vc nao fez a instancia da string na classe chamadora… ou seja pra executar o setTitulo vc tem q ter essa string ja instanciada em outra classe…
flw,
rsrs!
bom eu tenho q imprimi-los, to tentando aqui, mas estou tento problemas no for q criei para exibir os dvds cadastrados…
n fique nervoso, por eu ser estremamente novato.
Obrigado pela ajuda!
to com erro no for para exibir os dvds:
[code]
public void exibeDvd()
{
for(int y =0; y < x; y++)
System.out.println(“Os Dvds cadastrados são:”);
System.out.printf("Código: %d; Título: %s; Gênero: %s; " +
“Número de Cópias: %d \n”,codigo[y],titulo[y], generoReal[y],copias[y] );
}//end method exibeDvd
}//end class[/code]
o msg de erro eh a variavel int y, n foi declarada…
estranho, pois ela esta declarada no for…
o erro esta nesta linha
"Número de Cópias: %d \n",codigo[y],titulo[y], generoReal[y],copias[y] );
tenta fazer isso
for(int y =0; y < x; y++) {
System.out.println("Os Dvds cadastrados são:");
System.out.printf("Código: %d; Título: %s; Gênero: %s; " +
"Número de Cópias: %d \n",codigo[y],titulo[y], generoReal[y],copias[y] );
}
abre e fecha {} no FOR.
eh mesmo! rs
vlw!
ta dando uns error aki,pois esta sendo exibido os dvds cmo null, mas isso acho q eu consigo resolve!
vlwwww!!
Da uma analisada nesse código modificado:
import java.util.Scanner;
public class Dvd {
int[] copias = new int[10];
int[] codigo = new int[10];
String[] titulo = new String[10];
String[] generoReal = new String[10];
public void setTitulo(String titulo, int index) {
if( this.titulo.length > index) {
this.titulo[index] = titulo;
} else {
String[] tmp = new String[index + 1];
for(int i = 0; i < this.titulo.length; i++) {
tmp[i] = this.titulo[i];
}
tmp[index] = titulo;
this.titulo = tmp;
}
}
public String[] getTitulo() {
return titulo;
}//end set get titulo
public void setGeneroReal( String genero, int index) {
if( this.generoReal.length > index) {
this.generoReal[index] = genero;
} else {
String[] tmp = new String[index + 1];
for(int i = 0; i < this.generoReal.length; i++) {
tmp[i] = this.generoReal[i];
}
tmp[index] = genero;
this.generoReal = tmp;
}
}
public String[] getGeneroReal()
{
return generoReal;
}//end set get generoReal
public void setCopias( int copias, int index) {
if( this.copias.length > index) {
this.copias[index] = copias;
} else {
int[] tmp = new int[index + 1];
for(int i = 0; i < this.copias.length; i++) {
tmp[i] = this.copias[i];
}
tmp[index] = copias;
this.copias = tmp;
}
}
public int[] getCopias() {
return copias;
}//end set get copias
public void setCodigo( int index) {
int novoCodigo = index + 100;
if( this.codigo.length > index) {
this.codigo[index] = novoCodigo;
} else {
int[] tmp = new int[index + 1];
for(int i = 0; i < this.codigo.length; i++) {
tmp[i] = this.codigo[i];
}
tmp[index] = novoCodigo;
this.codigo = tmp;
}
}
public int[] getCodigo()
{
return codigo;
}//end set get codigo
public void cadastraDvd() {
Scanner input = new Scanner(System.in);
System.out.print("Quantos DVDs deseja cadastrar? ");
int x = input.nextInt();
for(int j = 0 ; j < x ; j++ )
{
setCodigo(j);
System.out.print("Entre com o numero de copias que o DVD possui: ");
int copias = input.nextInt();
setCopias(copias, j);
System.out.print("Digite o título do filme: ");
String titulo = input.next();
setTitulo(titulo, j);
System.out.print("Escolha o nº que corresponde ao gênero do filme");
System.out.print("( 1-Ação; 2-Romance; 3-Comédia; 4-Terror ):");
int genero = input.nextInt();
switch(genero) {
case 1: setGeneroReal("Ação", j); break;
case 2: setGeneroReal("Romance", j); break;
case 3: setGeneroReal("Comédia", j); break;
case 4: setGeneroReal("Terror", j); break;
}//end switch
}//end for
System.out.println("Termino do programa!");
}//end method cadastra dvd
}
Quando iniciamos um array dessa maneira
int[] copias = new int[10];
Estamos dizendo que é um array de int e que na sua inicialização terá 10 posições.
Quando você iniciava com “0”, você está dizendo que o array não tem nenhuma posição. Ao tentar acessar qualquer posição desse array, uma exceção é lançada java.lang.ArrayIndexOutOfBoundsException.
No meu código acima, alterei os métodos Sets para validar se estamos querendo inserir um valor em um índice válido, caso o indice não exista, eu crio um novo array com o tamanho maior para atender o novo índice. Logo em seguida, copio os dados do array anterior para o novo, insiro o novo dado no índice solicitado e para finalizar, copio o array novo para o antigo. Uma simples troca!
O código precisa de um refactoring, não me peocupei em centralizar o código que manipula e troca os valores dos arrays! Fica pra você brincar!
Espero ter ajudado!
Abraços
cara, sem zueira, vc manja básico de programação? pq os erros seus sao erros básicos de programação, vetor, repetição, etc…sugiro a vc se ker aprender programação e com Java dar uma olhada na apostila da Caelum, é gratuita…
baixa ae…vai te ajudar…
[quote=Thiago Domingues]cara, sem zueira, vc manja básico de programação? pq os erros seus sao erros básicos de programação, vetor, repetição, etc…sugiro a vc se ker aprender programação e com Java dar uma olhada na apostila da Caelum, é gratuita…
baixa ae…vai te ajudar…
[/quote]
deixa eu te explicar:
eu to no 2º periodo, ae to começando a aprender programação , e o prof vai usar java.
meu professor eh meio doidao, e pediu para gente fazer esse exercicio, eh claro q pra quem sabe, esse programa chega a ser ridiculo, mas pra q nao manja igual eu eh phoda, entao eu comprei o livro do deital 6º ed java como progrmar… e fui dando uma lida por alto, ai surgiu esses codigos ae q vc esta vendo! hehe
des do ano passado eu sempre quiz aprender java d verdade, mas sempre fico nessa, mas agora eu devo melhorar…
ja baixei a apostila q vc me indicou! vlww mesmo!! o prog esta rodando blz agora! obrigado a todos! [RESOLVIDO]
entao cara, primeira coisa, seja um pouco mais humilde, no começo vc disse q tava procurando o erro e não
tava encontrando, no fim a galera do fórum ficou ae a tarde toda te mostrando o erro, enquanto vc não tinha a
noção básica, vc até ficou meio bravo comigo e me mandou estudar ARRAYS…realmente preciso estudar muito ainda… ninguem vai te massacrar pq vc nao sabe, aki é um fórum, onde uns aprendem com os outros…ae no fim vc disse q não manjava…mas é isso ae cara, vamos em frente e a galera ae te ajuda, quer dizer, nos ajuda…flw…
Sinceramente você só piorou o problema, arrays deveriam ter sido eliminadas em primeiro lugar.
e rafa:
O teu professor é doido mesmo. Não se dá Java em 2º período de faculdade, muito menos antes de estudar programação básica.
renrutal
Como você fala que eu piorei o problema? Você queria que eu postasse a solução com ArrayList, LinkedList, ou o que mais?
O cara está aprendendo sobre programação, iniciou com java agora, falar de coleções ou qualquer outra bobagem pra ele agora seria um erro com certeza!
Onde eu errei em mostrar para ele que uma solução com arrays é possível?
Quero entender isso!
Não tenho problema com arrays, desde que usadas corretamente.
O problema que o código tá procedural até o osso, com zero de encapsulamento.
Que o código está procedural até concordo com você! Mas a minha intensão era fazer ele entender como manipular arrays de maneira simples alterando o código existente!
OO deixa pra ele correr atras!