Preciso de uma ajuda, preciso retirar os campos vazios da array e retornar somente os numeros, exemplo String[] n1 = {3;;4;;5;;6;;7;;8;;9}; e retornar em outra variavel apenas String n2 {3;4;5;6;7;8;9}; sem os campos vazios, estou utiliizando eclipse, tentei com split e replaceAll mas nao consegui fazer, se alguem puder ajudar fico agradecido
Ajuda com arrays, campos vazios
12 Respostas
Acho que você precisa de 4 passos:
1 - Contar quantos espaços estão ocupados
2 - Criar o vetor que vai receber os espaços ocupados
3 - Copiar os valores dos espaços ocupados
4 - Retornar o vetor resultante
Não ficou muito claro sua dúvida, mas da forma como entendi, pensei em duas formas de fazer:
import java.util.ArrayList;
import java.util.Arrays;
class Main {
static String[] n1 = { "1", "", "2", "", "", "3", "4", "" };
static void method1() {
ArrayList<String> n2 = new ArrayList<>();
for (String n: n1) if (!n.isEmpty()) n2.add(n);
System.out.println(n2);
}
static void method2() {
var n2 = new ArrayList<>(Arrays.asList(n1));
n2.removeIf(String::isEmpty);
System.out.println(n2);
}
public static void main(String... args) {
method1();
method2();
}
}
e como faz isso?
tentei fazer isso, nao funcionou
“não funcionou” é uma afirmação muito vaga.
O que não funcionou exatamente? Apareceu algum erro? Qual erro?
Se o código não apresentou o resultado desejado, por favor, explique melhor a sua necessidade. Se possivel, mostre o código que vc já tem.
Eu fiquei confuso porque na sua primeira mensagem vc usou ponto e virgula pra separar os elementos do array, mas se vc explicar de outra forma talvez eu possa ajudar.
isso quero somente os numeros, sem ponto virgula
String[] v1 = {3;;4;;5;6;;7;;8;;9};
retornar
String v2= {3 4 5 6 7 8 9};
Começa que um vetor tem seus elementos separados por vírgula
Depois, se você está fazendo um vetor de String, ele deve conter elementos do tipo String, senão, não funciona.
Como você “anda” pelas casas de um vetor? Como você identifica se a posição está vazia? Como cria um novo vetor? Como copia um valor de uma posição de um vetor para outra posição de outro vetor?
é isso que to tentando fazer, porem nao estou conseguindo
Talvez o que vc tem seja uma String comum e não um array de strings. Algo como:
String str = "3;;4;;5;6;;7;;8;;9";
Se for isso, vê se o código abaixo de ajuda.
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
String str = "3;;4;;5;6;;7;;8;;9";
ArrayList<String> arraySemEspacos = new ArrayList<>();
for (String n: str.split(";"))
if (!n.isEmpty())
arraySemEspacos.add(n);
System.out.println(arraySemEspacos);
}
}
Se ainda não for isso, explica melhor, se puder, mostra o seu código.
é que a variavel que voce criou “str” ela ja tem que ser um array, meu codigo ta assim, porem ele ta retornando apenas [ ; ] assim sem os numeros
a variável n tem o valor ";", através de:
String n = ";";
Olha o que você esta fazendo logo abaixo:
if(!n.isEmpty())
arraySemEspacos.add(n)
Você esta verificando se n não esta vazio(não vai estar mesmo, pois falou que o valor é ";") e esta adicionando o valor ";" no array
Tentou aplicar o que o @wldomiciano postou?
No caso este array sempre vai ter apenas um elemento? Se sim, acho que isso resolve:
import java.util.ArrayList;
class Main {
public static void main(String[] args) {
String[] str = { "3;;4;;5;6;;7;;8;;9" };
ArrayList<String> arraySemEspacos = new ArrayList<>();
for (String n: str[0].split(";"))
if (!n.isEmpty())
arraySemEspacos.add(n);
System.out.println(arraySemEspacos);
}
}