Erro "case expressions must be constant expressions&quo

Olha ta dando erro no meu case, alguem poderia me ajudar.

[code]public class Pesquisa {
private static final int P_CONSULTAS_CAMPO_CAMP = 0;
private static final int P_CONSULTAS_CAMPO_CICLO = 1;
private static final int P_CONSULTAS_CAMPO_ESTACAO = 2;
private static final int P_CONSULTAS_CAMPO_DIA = 3;
private static final int P_CONSULTAS_CAMPO_MES = 4;
private static final int P_CONSULTAS_CAMPO_ANO = 5;
private static final int P_CONSULTAS_CAMPO_INICIO = 6;
private static final int P_CONSULTAS_CAMPO_FIM = 7;
private static final int P_CONSULTAS_FILTRO_CT = 0;
private static final int P_CONSULTAS_FILTRO_CAMP = 1;
private static final int P_CONSULTAS_FILTRO_CICLO = 2;
private static final int P_CONSULTAS_FILTRO_ESTACAO = 3;
private static final int P_CONSULTAS_FILTRO_DIA = 4;
private static final int P_CONSULTA_FILTRO_MES = 5;
private static final int P_CONSULTA_FILTRO_ANO = 6;
private static final int P_CONSULTAS_FILTRO_INICIO = 7;
private static final int P_CONSULTAS_FILTRO_FIM = 8;

private static final int P_CONSULTAS_NUM_FILTROS = 5;



public String ja(){

		
		String campanha = Keyboard.readString(); 
		String ciclo = Keyboard.readString(); 
		String estacao = Keyboard.readString();
		String diaDia = Keyboard.readString();
		String diaMes = Keyboard.readString();
		String diaAno = Keyboard.readString();
		String mesMes = Keyboard.readString();
		String mesAno = Keyboard.readString();
		String anoAno = Keyboard.readString();
		String inicioDia = Keyboard.readString();
		String inicioMes = Keyboard.readString();
		String inicioAno = Keyboard.readString();
		String inicioHora = Keyboard.readString();
		String inicioMinutos = Keyboard.readString();
		String inicioSEgundos = Keyboard.readString();
		String terminoDia = Keyboard.readString();
		String terminoMes = Keyboard.readString();
		String terminoAno = Keyboard.readString();
		String terminoHora = Keyboard.readString();
		String terminoMinutos = Keyboard.readString();
		String terminoSEgundos = Keyboard.readString();
		String CT = Keyboard.readString();
		String szAuxStr;
		
		
		int P_CONSULTAS_FILTRO_CT = 0;
		int P_CONSULTAS_FILTRO_CAMP = 1;
		int P_CONSULTAS_FILTRO_CICLO = 2;
		int P_CONSULTAS_FILTRO_ESTACAO = 3;
		int P_CONSULTAS_FILTRO_DIA = 4;
		int P_CONSULTAS_NUM_FILTROS = 9;
		int P_CONSULTA_FILTRO_MES = 6;
		int P_CONSULTA_FILTRO_ANO = 7;
		int P_CONSULTAS_FILTRO_INICIO = 8;
		int P_CONSULTAS_NUM_CTS = 1;
		int[] CONSULTAS_CTSel = new int[25] ;
		String[] CONSULTAS_DadosEntrada = new String[8];
		
			
		

		
		
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CAMP] = campanha;
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CICLO] = ciclo;
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_ESTACAO] = estacao;
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_DIA] = diaDia+"-"+diaMes+"-"+diaAno;
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES] = mesMes+"-"+mesAno;
		CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_ANO] = anoAno;
		
		int  i,j;
		int  iAno;
		int  iDiaMes;
		int  flagFiltroOk;
		boolean flagPrimFiltro;
		/* substitui tudo por string.
		char auxCmdSql[200];
		char auxFiltroStr[200];
		char szDataOrigem1[200];
		char szDataOrigem2[200];
		char szDataDestino1[200];
		char szDataDestino2[200];
		*/
		String szFiltro = null;
		String auxCmdSql = null;
		String auxFiltroStr = null;
		String szDataOrigem1 =null;
		String szDataOrigem2 = null;
		String szDataDestino1 = null;
		String szDataDestino2 = null;
		//  SQLSRV_Variable DTHR_FIM;
		//  SQLSRV_Variable D0THR_INICIO;
		//char szAuxStr[P_MAX_WHERE_CLAUSE];
		//char szFiltro[P_MAX_WHERE_CLAUSE];
		//static char szRetCmd[P_MAX_WHERE_CLAUSE];
	   
		int  iUltDiaMes_Normal[]   = {0,31,28,31,30,31,30,31,31,30,31,30,31};
		int  iUltDiaMes_Bissexto[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};

		  /* Formata filtro */
		  flagPrimFiltro = true;
		 
		//Da onde saiu isso P_CONSULTAS_NUM_FILTROS ??????
		  for (i=0; i < P_CONSULTAS_NUM_FILTROS; ++i)
		  {
		    /* comando SQL - se for primeiro filtro, inicializa com WHERE; senao, continua com AND */
		    if (flagPrimFiltro)
		    {
		    	//) q faz isso mesmo???
		      auxCmdSql = "WHERE";
		      auxFiltroStr = "Filtro:";
		    }
		    else
		    {
		      auxCmdSql = "AND";
		      auxFiltroStr = ",";
		    }

		    /* Verifica se o campo foi preenchido */

		    
			
			switch(i)
			{
				case P_CONSULTAS_FILTRO_CT:
					/* Para cada botao de selecao de carro torpedo */
				for (j=0; j < P_CONSULTAS_NUM_CTS; ++j)
				{
				  
				if(CONSULTAS_CTSel[j] == 1)
				  {
				    /* reseta indicacao de primeiro filtro */
				    flagPrimFiltro = false;
		  		    /* Inclui filtro */
					szAuxStr = " "+auxCmdSql+" (FILTRO_CT = 'CT"+j+1+"')";
					szFiltro += szAuxStr;
					break;
				  }
				}
				break;

		      
				case P_CONSULTAS_FILTRO_CAMP:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CAMP].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* Inclui filtro */
		          szAuxStr =  " "+ auxCmdSql +" (FILTRO_CAMPANHA = "
		          + CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CAMP] +") ";
		          szFiltro += szAuxStr;
		        }
		        break;

		      
				case P_CONSULTAS_FILTRO_CICLO:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CICLO].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* Inclui filtro */
		          szAuxStr = " " +auxCmdSql+" (FILTRO_CICLOCT = "+ CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_CICLO] +") ";
		          szFiltro += szAuxStr;
		        }
		        break;

				case P_CONSULTAS_FILTRO_ESTACAO:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_ESTACAO].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* Inclui filtro */
		          szAuxStr = " "+ auxCmdSql +" (FILTRO_ESTACAO = '"+CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_ESTACAO]+"') ";
		          szFiltro += szAuxStr;
		        }
		        break;

		      
				case P_CONSULTAS_FILTRO_DIA:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_DIA].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* pega o dia digitado pelo operador em formato de data completa */
		          szDataOrigem1 += ""+CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_DIA]+" 00:00:00";
		          szDataOrigem2 += ""+CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_DIA]+" 00:00:00";

		          /* converte o dia para data inicial em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 00:00:00.00, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino1 */


		          /* converte o dia para data final em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 23:59:59.99, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino2 */

		          /* Inclui filtro */
		          szAuxStr = " "+auxCmdSql+" (FILTRO_DTHR BETWEEN "+szDataDestino1+" AND "+szDataDestino2+") ";
		          szFiltro += szAuxStr;
		        }
		        break;

				case P_CONSULTA_FILTRO_MES:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* Pega o ano */
		          iAno = Integer.parseInt(CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES]) + 3 ;
		          /* Se o ano for bissexto */
		          if (((float)(((float)iAno)/4) - ((int)(iAno/4)) ) == 0)
		            iDiaMes = iUltDiaMes_Bissexto[Integer.parseInt(CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES])];
		          else
		            iDiaMes = iUltDiaMes_Normal[Integer.parseInt(CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES])];
		           /* pega o mes digitado pelo operador em formato de data completa */
		          szDataOrigem1 += "01/"+ CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES] +" 00:00:00";
		          szDataOrigem2 += "01/"+ CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES] +" 00:00:00";

		          /* converte o mes para data inicial em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 00:00:00.00, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino1 */


		          /* converte o mes para data final em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 23:59:59.99, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino2 */

		          /* Inclui filtro */
		          szAuxStr = " "+auxCmdSql+" (FILTRO_DTHR BETWEEN "+szDataDestino1+" AND "+szDataDestino2+") ";
		          szFiltro += szAuxStr;
		        }
		        break;

				case P_CONSULTA_FILTRO_ANO:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_ANO].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* pega o ano digitado pelo operador em formato de data completa */
		          szDataOrigem1 += "01/01/"+ CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES] +" 00:00:00";
		          szDataOrigem2 += "31/12/"+ CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_MES] +" 00:00:00";
		      
		          /* converte o ano para data inicial em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 00:00:00.00, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino1 */


		          /* converte o ano para data final em formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 23:59:59.99, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino2 */

		          /* Inclui o filtro */
		          szAuxStr = " "+ auxCmdSql +" (FILTRO_DTHR BETWEEN "+szDataDestino1+" AND "+szDataDestino2+") ";
		          szFiltro += szAuxStr;
		        }
		        break;

		     
				
				case P_CONSULTAS_FILTRO_INICIO:
		        if (CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_INICIO].trim().length() > 0)
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* converte a data inicial para formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 00:00:00.00, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino1 */
		          /* Inclui filtro */
		          szAuxStr = " "+ auxCmdSql +" (FILTRO_DTHR >= "+szDataDestino1+") ";
		          szFiltro += szAuxStr;
		        }
		        break;

		      
				case P_CONSULTAS_FILTRO_FIM:
		        if( CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_FIM].trim().length() > 0 )
		        {
		          /* reseta indicacao de primeiro filtro */
		          flagPrimFiltro = false;
		          /* converte a data digitada pelo operador em formato do banco */
		          szDataDestino1 += CONSULTAS_DadosEntrada[P_CONSULTAS_CAMPO_FIM];
		          /* converte a data final para formato aceito pelo banco */
		          /* O formato aceito pelo banco é DD-MMM-AAAA 00:00:00.00, onde MMM é o nome do mês em inglês, sendo: */
		          /*                             JAN , FEB , MAR , APR , MAY , JUN , JUL , AUG , SEP , OCT , NOV , DEC */
		          /* data convertida em szDataDestino1 */
		          /* Inclui filtro */
		          szAuxStr = " "+ auxCmdSql +" (FILTRO_DTHR <= "+szDataDestino1+") ";
		          szFiltro += szAuxStr;
		        }
		        break;
		      }
		    }
		  
		String szRetCmd = "SELECT * FROM V_TESTES_JAVA_NET " + szFiltro;
		  return (szRetCmd);
		} /* CONSULTAS_FormatarFiltro */

}
[/code]

[quote]Exception in thread “main” java.lang.Error: Unresolved compilation problems:
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions
case expressions must be constant expressions

at Pesquisa.ja(Pesquisa.java:132)
at DemoPesquisa.main(DemoPesquisa.java:6)[/quote]

Cara,
Primeiro vc declarou a var P_CONSULTAS_FILTRO_CT como static final e como var de classe.
Depois dentro do método vc declara uma var int P_CONSULTAS_FILTRO_CT.
Ou seja, vc tem duas var com o mesmo nome. Uma var de classe que é a static final e a int que é interna ao método.
A var que o switch reconhece é a interna ao método a menos que vc use assim:


switch(i)
{
    case Pesquisa.P_CONSULTAS_FILTRO_CT: 

Pois se ela é static eu devo acessá-la sem usar uma instancia.

Mas aconselho a vc mudar o nome das variáveis aí pra não se confundir!!!

Falow!