Boa noite.
Preciso criar um indicador em uma plataforma de trade onde aceita java.
Fiz 2 testes, um com array normal e outro com arrayList.
Com array normal não é o ideal porque preciso redimensionar mas nesse exemplo já tenho uma dificuldade em vincular a soma de um determinado volume ao seu preço.
Eu preciso fica somando volume ao preço, mesmo esse preço trocando de index, ele deve carregar o que já foi somado anteriormente com o novo volume.
No primeiro código tem um erro onde ele soma pelo index.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int escolha = 0;
double array[][] = new double[3][1];
double x[] = new double[3];
double y[] = new double[1];
while(escolha != -1){
System.out.println("1 para continuar, -1 parar ");
escolha = in.nextInt();
if(escolha == -1){
break;
}
for (int i = 0; i < 3; i++) {
System.out.println("Digite o " + (i+1) + "º Preço: ");
x[i] = in.nextDouble();
for (int j = 0; j < 1; j++) {
System.out.println("Digite o volume: ");
y[j] = in.nextDouble();
array[i][j] += y[j];
System.out.println("preço: " + x[i] + " volume " + y[j] );
System.out.println("Total: " + array[i][j]);
}
}
}
}
Neste print pode visualizar que não soma pelo preço e sim pelo index.
Com arrayList bidimensional.
Eu preciso somar e conseguir pegar tanto o preço quanto o volume que já foi somado nele.
Percebi que precisava redimensionar o array, por isso vou usar o arrayList.
Percebi que precisava reorganizar o array, então vou usar o Collections.sort().
Percebi que duplicaria números, então vou usar Set para remover os duplicados.
1º Não consegui fazer a soma.
2º Não consegui adicionar o que coletei via scanner ao Set.
3º Tirando o Set, fiz um teste inserindo valores, e não consegui coletar preço e volume separados, duplica no resultado.
Código abaixo com um print.
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<ArrayList<Double>> array = new ArrayList<>(); //Array final que deve conter o volume somado ao preço
ArrayList<Double> pr = new ArrayList<>(); //Array para receber o preço
ArrayList<Double> vl = new ArrayList<>(); //Array para receber o volume
Set<Double> remove = new TreeSet<>(); //Remove números duplicados.
int escolha = 0;
while(escolha != -1){
System.out.println("1 para continuar, -1 parar ");
escolha = in.nextInt();
if(escolha == -1){
break;
}
for (int i = 0; i < 3; i++) {
System.out.println("Digite o " + (i+1) + "º Preço: ");
pr.add(in.nextDouble());
Collections.sort(pr,Collections.reverseOrder()); //Organizar de baixo para cima
array.add(i,pr);
for (int j = 0; j < 1; j++) {
System.out.println("Digite o volume: ");
vl.add(in.nextDouble());
array.add(j,vl);
System.out.println("preço: "+ array.get(i) + " Volume: " + array.get(j)); //Não esta aparecendo os dados individuais, esta duplicando
}
}
}
}
Print
Desculpe o texto longo, mas é um pouco confuso para explicar, por isso vou deixar um print do que deseja fazer.
OBS: Essa plataforma não aceita criação de classes e métodos, o que deixei no código funcionou porque já estava importada, mas se precisar fazer teste com outra coisa não tem problema em testar.
Vejam que cada preço ali recebeu uma quantidade de volume, e em laranja foi o maior, isso que preciso coletar.