09172650203973 Posted December 8, 2016 at 02:06 PM Report Share #601106 Posted December 8, 2016 at 02:06 PM Boas, Estou com uma duvida em relação ao tratamento de dados, vindos de um ficheiro de texto. O ficheiro de texto contém em cada linha 5 informações a tratar divididos por ";", ou seja: Int;string;char;double;int; ... Qual será a melhor solução para depois ordenar os 3 com o maior valor na primeira variável do tipo int e escrever num ficheiro de texto de saída? Declarar 5 arrays cada um individual (int, string, char, double, int) e aceder ao index de cada um com uma variavel int? e como poderia depois analisar e guardar os 3 com maior valor? Desde já, Obrigado "Impossível é apenas uma grande palavra usada por gente fraca que prefere viver no mundo como está em vez de usar o poder que tem para mudá-lo." Link to comment Share on other sites More sharing options...
iron Posted December 8, 2016 at 08:52 PM Report Share #601112 Posted December 8, 2016 at 08:52 PM Sabes que só queres os 3. Logo enquanto não tiveres os 3 vais guardando. Depois de teres os 3, ordenas os 3. Lês o próximo e comparas com o que tens. Se for maior, apagas o que não interessa e guardas. Cumprimentos, iron Link to comment Share on other sites More sharing options...
09172650203973 Posted December 8, 2016 at 09:50 PM Author Report Share #601114 Posted December 8, 2016 at 09:50 PM O que eu fiz foi inserir tudo em arrays e tendo uma variável int para controlar o index dos 5 arrays ao mesmo tempo. Exemplo: int numero = [24] ; string nome = [24] ; char posicao = [24] ; double pontos = [24] ; int pontos1 = [24]; for (int i = 0 ; i < line.length ; i++) { System.out.println("Todas os arrays e o i a controlar os index"); } conta o numero de linhas em line.length e imprime o conteúdo de todos os arrays. A melhor opção será em criar arrays temporários para inserir os de numero maior em "numero" e ir comparando? É que depois de ter os 3 melhores tem que coincidir o index dos melhores em numero com o resto dos arrays para passar a informação completa para o ficheiro de saída. Int;string;char;double;int; "Impossível é apenas uma grande palavra usada por gente fraca que prefere viver no mundo como está em vez de usar o poder que tem para mudá-lo." Link to comment Share on other sites More sharing options...
iron Posted December 9, 2016 at 12:18 AM Report Share #601119 Posted December 9, 2016 at 12:18 AM Porque não crias um objecto que contenha os 5 campos. E assim tens um array desse objecto. class Aux { public final int numero; public final String nome; public final char posição; public final double pontos; public final int pontos1; public Aux(int numero, ...) { ... } } e depois na outra fazes: LinkedList<Aux> values = new LinkedList<>() não precisas de vários arrays. Usa um objecto que lá tenha tudo. E só usas um array ou lista ou o que quiseres. Depois como vais gravando ou alterando ou ordenando, é um critério teu e o que achares mais fácil. 2 Report Cumprimentos, iron Link to comment Share on other sites More sharing options...
09172650203973 Posted December 9, 2016 at 09:59 AM Author Report Share #601120 Posted December 9, 2016 at 09:59 AM Vou tentar assim. Obrigado 😉 "Impossível é apenas uma grande palavra usada por gente fraca que prefere viver no mundo como está em vez de usar o poder que tem para mudá-lo." Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now