Vetor!

Bom… to começando agora em java… e to precisando de uma ajudinha… tenho um exercicio pra fazer… só q não to conseguindo implementar ele do jeito certo… segue o exercicio proposto e a minha resolução… vlwww!

1.Escreva um programa que, para uma dada seqüência de valores inteiros fornecidos em uma linha de entrada pelo usuário de comprimento maior ou igual a 3, calcule o número de triplas (subsqüências de comprimento 3) com valores iguais existentes na seqüência dada.
Exemplo para a seqüência 4 2 15 15 15 3 7 7 7 7 2 o programa deve produzir o resultado 3, pois a seqüência data contém um tripla com valores 15 e duas (sobrepostas) com valores 7.

RESOLUÇÃO!!!

import java.util.Arrays;
import java.lang.*;
import javax.swing.*;

public class OO12 {
    
    public static void main(String[] args) {
	int pri;
	int seg;
	int ter;
	int i=0;
	int ctrpl=0; 
	int[] v;
	v=new int[10];
	
	do{
		String s=JOptionPane.showInputDialog("Digite um nº:");
	 	v[i]=Integer.parseInt(s);
	 	++i;
	} while(v[i]!=0 );
	

	
	if (v.length<=3)
		System.out.println("animal");
	else while(i<v.length-2){
		pri=v[i];
		seg=v[i+1];
		ter=v[i+2];
			
	if ((pri==seg) && (seg==ter)){
		ctrpl=ctrpl+1;
	i=i+1;
	}
	}
	System.out.println("A qtd de triplas é: "+ctrpl);
	}

    }

Nesse trecho

 	do{
 		String s=JOptionPane.showInputDialog("Digite um nº:");
 	 	v[i]=Integer.parseInt(s);
 	 	++i;
 	} while(v[i]!=0 );

suponho que você está querendo que o usuário vá digitando todos os números da lista enquanto não escrever zero, certo?

O problema é que ele vai cair fora do looping logo na primeira iteração, pois você incrementou o “i” antes de fazer a comparação.

Tente algo do tipo:

String s=null; do{ s=JOptionPane.showInputDialog("Digite um nº:"); v[i]=Integer.parseInt(s); ++i; } while(!s.equals("0") );

Poxa cara… vlw mesmo… essa parte funcionou… mas agora nada funciona no programa… =(… tem como vc dar uma lida e tentar ver os erros? Agradeçooooo… vlw!!

Que isso vvelinho so quebrar cabeça … vc vai ter que usar uma StringBuffer para armazenar todos em String a linha que o usuario digitou , apos vai ter que partir os elementos desta linha com a StringTokenizer com separador de espaço apos vai ter que incrementar um contador de repetição para verificar quantos elementos repetira, vai ter que usar excessão quando fazer Integer do elemento … e vai dar um tiquinho de trabalho … !!!

StringTokenizer??? Tá loco??? Não é complicar demais para um trabalho simples?

Na pior das hipóteses, se você já tem a linha inteira, basta fazer linha.split(" "); para obter um vetor de Strings com os números separados.

Basta usar uma variável para o último número lido, um contador para os números repetidos e um contador para o número de triplas.

Então:

contadorDeRepetidos = 1 Leia um número; Enquanto o usuário não digitou 0 Se o número for igual ao anterior, some 1 no contadorDeRepetidos. se o contadorDeRepetidos &gt= 3 some 1 ao contadorDeTriplas fim se Senão atribua ao anterior o numeroLido contadorDeRepetidos = 1 fim se leia um número fim enquanto mostre contadorDeTriplas

Note que você pode usar a mesma lógica para processar o seu vetor. Basta substituir numeroLido para cada elemento do vetor e trocar o while por um for que percorra seu vetor inteiro.