Duvida no codigo

6 respostas
A

Bom dia eu tenho o seguinte código:

for(File arquivo : lista) {  
		    
		           FileReader reader = new FileReader(arquivo);  // lê ficheiro
		             BufferedReader leitor = new BufferedReader(reader);  
		       
		            while ((linha = leitor.readLine()) != null) {  
		            	 StringTokenizer st;  
		                 st = new StringTokenizer(linha, "\t");   //lê o ficheiro linha a linha
		                   
		                   String t = "<Lua>"; 
		                   
			         Pattern p = Pattern.compile(t);  
			         Matcher m = p.matcher(linha); //procura string t e devolve a linha caso encontre
			           
			     
				      
				         while (m.find()){
			        	String x = arquivo.getPath(); // mostra o nome do ficheiro onde está a palavra
			            System.out.println("" + x);  
			            System.out.println(m.group());

Eu anteriormente queria apenas encontrar os ficheiros que continham “Lua” mas agora queria acrescentar na procura também os que contem o “Sol” …

Como posso fazer isso??

Obrigada

6 Respostas

R

eu colocaria isso num método e a palavra que vc iria procurar seria passada por parâmetro e atribuida à String t ( no caso lua, depois sol ) Serve ou precisaria alterar esse método mesmo?

A

Não sei bem se é isso, pois não entendo muito da matéria. Os ficheiros são imensos e aparecem sem ordem e queria que se identificasse sol colocava numa base de dados se encontrasse lua colocava noutra… o que sugeriu dá para isso???

A
Já consegui :) bigada só uma questão eu tenho no código algumas querys a base de dados:
ResultSet xx2 = stsql.executeQuery("SELECT Modelo FROM Loc WHERE Local = '"+local+"'");  
                           if (xx2.next()){     
                            String modeq = xx2.getString("Modelo");  
                              System.out.println(modeq);  
                                
                        String ddz = null;  
                             if(modeq.equals("ati"))  
                                 ddz = "3";  
                                  System.out.println("dz = 3");  
                             if(modeq.equals("an"))  
                                ddz = "0";  
      
                              ResultSet xx3 = stsql.executeQuery("SELECT regi FROM A WHERE Stud = '"+sd+"'");  
                             if (xx3.next()){  
                                String reg = xx3.getString("regi");  
                                  
                                 String ctdia = null;  
                                 if(reg.equals("body") && modeq.equals("amulti"))  
                                    ctdia = "0.34";  
                                  
                                 if(reg.equals("head") && modeq.equals("aquilion_multi"))  
                                   ctdia = "0.27";  
                               if(reg.equals("head") && modeq.equals("an"))  
                                    ctdia = "0.22";  
                                      
                                   
                                 if(reg.equals("body") && modeq.equals("an"))  
                                    ctdia = "0.22";
Mas só queria fazer quando fosse pois quando isto não se aplica e queria por os campos correspondentes como null... como posso fazer isso ????
drigo.angelo

No primeiro código que você postou, você usa mesmo o StringTokenizer? ali ele pareceu meio inútil xD

Essa segunda parte eu não entendi… o que tem que ser <Sol> :?:

[]'s

A

Não, o Tockenizer tava apenas para teste de uma primeira fase…

Eu queria que os selects que apresentei fossem apenas realizados qd fosse

No caso de Lua “saltar” pois não se aplica…

drigo.angelo
anamilagaia:
Já consegui :) bigada só uma questão eu tenho no código algumas querys a base de dados:
ResultSet xx2 = stsql.executeQuery("SELECT Modelo FROM Loc WHERE Local = '"+local+"'");  
                           if (xx2.next()){     
                            String modeq = xx2.getString("Modelo");  
                              System.out.println(modeq);  
                                
                        String ddz = null;  
                             if(modeq.equals("ati"))  
                                 ddz = "3";  
                                  System.out.println("dz = 3");  
                             if(modeq.equals("an"))  
                                ddz = "0";  
      
                              ResultSet xx3 = stsql.executeQuery("SELECT regi FROM A WHERE Stud = '"+sd+"'");  
                             if (xx3.next()){  
                                String reg = xx3.getString("regi");  
                                  
                                 String ctdia = null;  
                                 if(reg.equals("body") && modeq.equals("amulti"))  
                                    ctdia = "0.34";  
                                  
                                 if(reg.equals("head") && modeq.equals("aquilion_multi"))  
                                   ctdia = "0.27";  
                               if(reg.equals("head") && modeq.equals("an"))  
                                    ctdia = "0.22";  
                                      
                                   
                                 if(reg.equals("body") && modeq.equals("an"))  
                                    ctdia = "0.22";
Mas só queria fazer quando fosse pois quando isto não se aplica e queria por os campos correspondentes como null... como posso fazer isso ????
Coloca em um pmétodo, daí você só chama o método se for ... tipo
public void gravaBancoX(String local){
   ResultSet xx2 = stsql.executeQuery("SELECT Modelo FROM Loc WHERE Local = '"+local+"'");  
                           if (xx2.next()){     
                            String modeq = xx2.getString("Modelo");  
                              System.out.println(modeq);  
                                
                        String ddz = null;  
                             if(modeq.equals("ati"))  
                                 ddz = "3";  
                                  System.out.println("dz = 3");  
                             if(modeq.equals("an"))  
                                ddz = "0";  
      
                              ResultSet xx3 = stsql.executeQuery("SELECT regi FROM A WHERE Stud = '"+sd+"'");  
                             if (xx3.next()){  
                                String reg = xx3.getString("regi");  
                                  
                                 String ctdia = null;  
                                 if(reg.equals("body") && modeq.equals("amulti"))  
                                    ctdia = "0.34";  
                                  
                                 if(reg.equals("head") && modeq.equals("aquilion_multi"))  
                                   ctdia = "0.27";  
                               if(reg.equals("head") && modeq.equals("an"))  
                                    ctdia = "0.22";  
                                      
                                   
                                 if(reg.equals("body") && modeq.equals("an"))  
                                    ctdia = "0.22";  
}
No outro código
if(x.equals("<Sol>"){
    gravaBancoX(String x);
else
 ...

Admito que o código tá um pouco estranho, mas pelo que você mostrou o melhor que pude pensar foi isso, pelo menos por enquanto :roll:

[]'s

Criado 13 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 6
Participantes 3