Comparar Array com String e capturar index

Pessoal, tenho uma ideia na minha cabeça mas nesse caso não sei como desenvolve-la
Tenho um array de String com os mêses que vai de 0 a 11.
tenho uma matriz[i][j]
e tenho uma classe com parâmetros

 String[] meses = {"janeiro", "feveiro", "março", "abril ", "maio", "junho",
                    "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};
         valores = new Receita(100, 100, new MesAno("janeiro", 2019));
        receita.tabela[0][0] == valores;

`
Nessa linha um dos parametros é: new MesAno que informa um mês e um ano.
o que desejo é comparar o janeiro com meu array de meses e retornar posição 0
para colocar no meu array bi-dimensional

valores = new Receita(100, 100, new MesAno(“Janeiro”, 2019));

`

Vc poderia fazer assim:

int index = java.util.Arrays.asList(meses).indexOf("janeiro");

Está é uma forma de pegar o index, mas preciso comparar pois o que desejo é coisa do tipo:

valores = new Receita(100, 100, new MesAno(“julho”, 2019)); //pegando o julho
julho = meses[ 0 ] ? (não, pois posição 0 ocupa janeiro.
julho = meses [ 5 ] ? (não, pois posição 5 ocupa junho.
julho = meses [ 6 ] ? (sim, pois julho = julho)
[ i ] = 6 agora então
receita.tabela[0][6] == valores; // agora julho ocupa a posição 6 da minha matriz

OBS: um dos problemas que tô passando é que não consigo comparar direto com o .getMesano que é o 3 parâmetro de Receita pois ele também inclui um inteiro nesse caso o ano

Vc usaria assim:

String[] meses = {"janeiro", "feveiro", "março", "abril ", "maio", "junho", "julho", "agosto", "setembro", "outubro", "novembro", "dezembro"};
int index = java.util.Arrays.asList(meses).indexOf("janeiro");
String mes = meses[index];
Receita valores = new Receita(100, 100, new MesAno(mes, 2019));
receita.tabela[0][index] == valores;

Se não for isso, vc teria que explicar ainda melhor.

kkk não é isso, a ideia é que o usuario informe esse parametro que voçê considerou mes
Receita valores = new Receita(100, 100, new MesAno(mes, 2019));
só coloquei um valor fixo a nível de teste e de velocidade

   for (int i=0; i<meses.length; i++){
             if(meses[i].equals(valores.getMesano())) {
                 System.out.println("TRUE");
             } else System.out.println("FALSE");
         }

achei que essa poderia ser uma forma.
a impressão True or False é para testar se funciona, mas a condição sempre é false pois o equals é de incompatible types, pois o .getMesano é um atributo de Receita do tipo MesAno que possui dois atributos: this.mes e this.ano

Então pode ser que a classe MesAno precise de um método getMes() que retorna somente a String do mês.

Aí vc faria algo assim:

for (int i = 0; i < meses.length; i++) {
  if(meses[i].equals(valores.getMesano().getMes())) {
    System.out.println("TRUE");
  } else System.out.println("FALSE");
}

Funcionou!!
essa parte do código que eu tava com dificuldade de implementar ficou assim:

 valores = new Receita(100, 100, new MesAno("Janeiro",2019));
                    if (!(valores.getMesano().getAno() < 2020 - receita.getQtdAnos())) {
                    for (int i=0; i<meses.length; i++){
                      if(meses[i].equals(valores.getMesano().getMes())) {
                        index =i;
                        }
                     }
                    if (receita.tabela[2020 - valores.getMesano().getAno()][index] == null) {
                        receita.tabela[2020 - valores.getMesano().getAno()][index] = valores;
                    } else {
                        receita.tabela[2020 - valores.getMesano().getAno()][index].incrementar(valores);
                    }
                    }
1 curtida