Tem alguma forma de um array definido em um método ser usado em outro?
No EP2 o usuário digita quantos substantivos ele quer usar. Convertendo de String para Int eu consigo criar um array do tamanho digitado, mas isso é dentro de um método. Ai não consigo usar em outro método.
E se eu defino ele na classe, eu não consigo mudar o tamanho depois.
Tem alguma forma de um array definido em um método ser usado em outro? ou de mudar o tamanho dele depois de definido?
Encontrei um jeito já, mas caso alguém caia no mesmo problema...
Eu defini o array na classe como null, ai disse o tamanho dele só no método, e ao que parece deu certo.
class GeradorDadaista
{
String[] artigo = null;
.... blá blá blá...
public static void main (String[] args)
{
...
blá blá blá blá
...
artigo = new String[numerosubstantivos];
...
}
}
Eu defini o array na classe como null, ai disse o tamanho dele só no método, e ao que parece deu certo.
class GeradorDadaista
{
String[] artigo = null;
.... blá blá blá...
public static void main (String[] args)
{
...
blá blá blá blá
...
artigo = new String[numerosubstantivos];
...
}
}
Está perfeito, Mei!
Quando você declarou a variável artigo na classe, tornou-a visível a todos os métodos, podendo altera-la em qualquer um deles.
Lembrando: quando declaramos String [] artigo, estamos criando uma referência para um vetor de strings, isto é, o vetor ainda não existe. Só teremos um vetor quando o instanciarmos, ou seja, quando chamamos new String[tamanho].
Assim, o que o Mei fez foi:
1- Criou um referência para um vetor (cujo tamanho não é sabido no momento);
2- Apenas depois de saber qual tamanho o vetor deverá ter, criou um objeto do tipo vetor de strings (uma instãncia) e fez com que artigo passasse a "apontar" para essa instância.
Espero que tenha ficado claro.
Abraço,
Vinícius
Quando você declarou a variável artigo na classe, tornou-a visível a todos os métodos, podendo altera-la em qualquer um deles.
Lembrando: quando declaramos String [] artigo, estamos criando uma referência para um vetor de strings, isto é, o vetor ainda não existe. Só teremos um vetor quando o instanciarmos, ou seja, quando chamamos new String[tamanho].
Assim, o que o Mei fez foi:
1- Criou um referência para um vetor (cujo tamanho não é sabido no momento);
2- Apenas depois de saber qual tamanho o vetor deverá ter, criou um objeto do tipo vetor de strings (uma instãncia) e fez com que artigo passasse a "apontar" para essa instância.
Espero que tenha ficado claro.
Abraço,
Vinícius
Eu to tentando fazer isso, mas aparece o seguinte erro:
1 error found:
File: C:\Documents and Settings\Eduardo\Meus documentos\Programação\GeradorDadaista.java [line: 31]
Error: non-static variable guardaVerbos cannot be referenced from a static context
??
Eduardo
Em resposta à José Eduardo Santos
Re: Definir Array no método - EP2
Eduardo, esse erro acontece porque o método main é static, ou seja, pode ser usado sem criar nenhum objeto da classe. Por esse motivo, todos os métodos e atributos a serem empregados pelo main devem ser static também. Assim, basta incluir static nas suas declarações: static String[] guardaVerbos, static void produzVersos(...), etc.
Daniel David
Daniel David