Lógica Difícil

4 respostas
C

Olá, boa tarde. Há algum tempo estou quebrando a cabeça prá montar uma lógica. Alguém quer me ajudar a quebrar a cabeça ou resolver sem quebrar a cabeça (de uma forma fácil que eu não esteja visualizando)? É o seguinte: tenho estes dados numa tabela:
valor1 valor2
1 2
1 2
2 1
3 1
3 1
2 3
2 4
1 4
1 5

Pela lógica, se o valor2 não se repetir na linha seguinte, eu imprimo o valor2 da linha em questão. Se ele se repetir eu tenho que somar o valor2 com o valor1 de cada linha seguinte em que o valor se repete. Por exemplo, pelos números acima, a saída deveria ser: 3 (equivalente a valor2 da primeira linha + valor1 da segunda linha), 7 (equivalente ao valor2 da terceira linha + valor1 da quarta e quinta linha), 3 (equivalente ao valor2 da sexta linha - não se repate), 5 (equivalente ao valor2 da sétima linha + o valor1 da oitava linha) e 5 (equivalente ao valor2 da nona linha) - de forma que eu sempre comparo o valor2 de uma linha com o valor2 da linha seguinte para tomar uma decisão. Alguém pode me ajudar?
Grato, Carlos.

4 Respostas

guisantogui

Super confuso! :?

Mas por curiosidade, onde vc vai usar isso!
Tente explicar de novo pq eu naum entendi cuase nada depois da primeira frase após os dados! :? :?

Luiz_Aguiar

Coloque o código que vc já escreveu pra resolver o problema.

[]s

C

é um serviço que um colega meu faz manualmente. onde os dados não se repetem ele pega o valor2. onde se repetem ele pega o valor2 da primeira linha e o valor1 das linhas subsequentes onde o valor2 continua se repetindo. amanhã eu postarei o que eu já fiz, pois está em outro pc, ok?

C

Já tentei até este ponto. enquanto estava com os dados de tabela enviados anteriormente, funcionou. Mas depois que incluí mais dados prá teste, a lógica já não deu certo mais. Também não estou fazendo da melhor maneira né? Fiz assim simplesmente prá seguir um raciocício simplório que estava tendo no início.

public static void main(String args[]) {

         Double s1;
         Double t;
         Double soma = null;
    	 Connection con;
         Statement stmt;
                        String query = "select valor1, valor2 from testapgm";

          try {
               Class.forName("oracle.jdbc.driver.OracleDriver");

          } catch(java.lang.ClassNotFoundException e) {
               System.err.print("ClassNotFoundException: ");
               System.err.println(e.getMessage());
          }

          try {
                        con = 
DriverManager.getConnection("jdbc:oracle:thin:@10.11.100.120:1521:ORCL", "db_controle_aciaria", 
"bombaim123");

               stmt = con.createStatement();

               ResultSet rs = stmt.executeQuery(query);

               //System.out.println("Teste Oracle");
               int contador = 0;
               List<Double> lr1 = new ArrayList<Double>();
               List<Double> manganes = new ArrayList<Double>();
               
               while (rs.next()) {
            	  s1 = Double.parseDouble(rs.getString("valor2"));
                  lr1.add(s1);
                  t = Double.parseDouble(rs.getString("valor1"));
                  manganes.add(t);
               }

               stmt.close();
               con.close();
               contador = 0;
               if (lr1.get(0).equals(lr1.get(1))){
            	  soma = lr1.get(0);
            	  contador += 1;
               } else {
            	   System.out.println(lr1.get(0));
               }
               for(int i = 1; i < lr1.size() - 1; i++) {
            	   if (i == 1 ){
            		   if (lr1.get(1).equals(lr1.get(2))){
            			   soma = soma + manganes.get(1);
            		   }else
            		   {
            			   System.out.println(lr1.get(0)+manganes.get(1));
            		   }
            	   }
            	   if (i > 1 & lr1.get(i).equals(lr1.get(i + 1)) & contador == 0){
            		   soma = soma + lr1.get(i) + manganes.get(1 + i);
            		   contador = contador + 1;
            	   }else
            		   if (! lr1.get(i).equals(lr1.get(i + 1)) &i > 1 &  contador == 0){
                		   System.out.println(lr1.get(i));
                	   }else	
            		   if (i > 1 & lr1.get(i).equals(lr1.get(i + 1)) & contador > 0){
                		   soma = soma + manganes.get(i);
                	   }
            	   if (! lr1.get(i).equals(lr1.get(i + 1)) & i > 1 & contador > 0){
            		   System.out.println(soma);
            		   soma = 0.0;
            		   contador = 0;
            	   }
            	if (lr1.size() == i + 2){
            		
            		if (lr1.get(i).equals(lr1.get(i + 1))){
            			soma = soma + manganes.get(i+ 1);
            			System.out.println(soma);
            		}else{
            			System.out.println(lr1.get(i + 1));
            			
            		}
            		
            	}
               }
               
               } catch(SQLException ex) {
               System.err.println("SQLException: " + ex.getMessage());
          }
     }
Criado 26 de maio de 2010
Ultima resposta 27 de mai. de 2010
Respostas 4
Participantes 3