Eu tenho um código para remover um índice que foi digitado pelo usuário, só que ele não está funcionado corretamente, ele apaga dois valores quando era pra apagar um único, ou então apaga um posição que não foi a correta
![](https://i.stack.imgur.com/HiKRh.png)
public double remove(int K) {
double remover = 0;
if(!(K>=0 && K <size())) {
System.out.println("Posição invalida!");
}
for(int k=K;k< size()-1;k++) {
remover =vet[K]= 0;
}
return remover;
}
Em vez de fazer esse for, vc não faz soh assim:
remover = vet[K]; // obtém o valor a ser removido
vet[K] = 0; // zera o valor da posição K do array
return remover;
Ah, e de acordo com seu código sempre será removido o índice 0 pois a variável já é iniciada em 0 mais o índice que quer remover.
ele ainda continua removendo dois indice
Posta o método atualizado de novo
Mostra o código atualizado
vou por a classe toda ak
public class Lista_array {
private double[] vet;
private int max = 0, livre = 0;
private int taman;
public Lista_array() {
max =1000;
vet = new double[max];
livre= 0;
}
public Lista_array (int maxElementos) {
max = maxElementos;
vet = new double [max];
livre = 0;
}
public void addLast(double v) {
if(livre < max) {
vet[livre] = v;
livre++;
}else {
System.out.println("Lista cheia!!!");
}
}
public double get(int i) {
if((i >= 0) && (i <size() )) {
return vet[i];
}else {
System.out.println("Elemento não consta da Lista!!!");
return 0;
}
}
public int size() {
taman = livre;
return taman;
}
public double getLast() {
//Implementar
if ( size() != 0 ) {
return vet[livre -1 ];
}
else{
System.out.println("Lista vazia!!!");
return 0;
}
}
public double getFirst() {
//Implementar
if ( size() != 0) {
return vet[0];
}
else {
System.out.println("Lista vazia!!!");
return 0;
}
}
public double remove(int K) {
if(!(K>=0) && (K <size())) {
System.out.println("Posição invalida!");
}
//remover = vet[K]; // obtém o valor a ser removido
vet[K] = 0; // zera o valor da posição K do array
return 0;
}
public double set (int i, double v) {
double K;
if ( (i >= 0) && (i < size()) ) {
K = vet[i];
vet [i] = v;
return K;
}
else {
System.out.println("Valor invalido!!");
return 0;
}
}
public double media () {
double m, soma = 0;
for (int i = 0; i < size(); i++) {
soma = soma + vet[i];
}
m = soma/size();
return m;
}
}
´´´
Quem está chamando o método remove?