meu CSV tem valores nulos, isso e um baita problema na hora de fazer um parsing. pra isso vou ter que fazer um if para setar ou nao o valor do csv no objeto. Porem pra dar certo precisaria pular uma linha no scanner
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
meu CSV tem valores nulos, isso e um baita problema na hora de fazer um parsing. pra isso vou ter que fazer um if para setar ou nao o valor do csv no objeto. Porem pra dar certo precisaria pular uma linha no scanner
Mostra o seu código, para termos uma ideia melhor.
package br.edu.easyChemistry;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Scanner;
public class Tabela implements Serializable {
private static final long serialVersionUID = 1L;
public static void main(String[] args) throws FileNotFoundException {
Elemento elemento = new Elemento();
List<Elemento> elementos = new ArrayList<>();
Scanner scanner = new Scanner(new File("data.csv"));
while(scanner.hasNextLine()) {
String linha = scanner.nextLine();
Scanner linhaScanner = new Scanner(linha);
linhaScanner.useDelimiter(",");
linhaScanner.useLocale(Locale.US);
elemento.setAtomicNumber(Integer.parseInt(linhaScanner.next()));
elemento.setSymbol(linhaScanner.next());
elemento.setName(linhaScanner.next());
elemento.setAtomicMass(linhaScanner.next());
elemento.setCpkHexColor(linhaScanner.next());
elemento.setElectronicConfiguration(linhaScanner.next());
elemento.setElectronegativity(Double.parseDouble(linhaScanner.next()));
elemento.setAtomicRadius(Integer.parseInt(linhaScanner.next()));
elemento.setIonRadius(linhaScanner.next());
elemento.setVanDelWaalsRadius(Integer.parseInt((linhaScanner.next())));
elemento.setIonizationEnergy(Integer.parseInt((linhaScanner.next())));
elemento.setElectronAffinity(Double.parseDouble((linhaScanner.next())));
elemento.setOxidationStates((linhaScanner.next()));
elemento.setStandardState((linhaScanner.next()));
elemento.setBondingType((linhaScanner.next()));
elemento.setMeltingPoint(Integer.parseInt((linhaScanner.next())));
elemento.setBoilingPoint(Integer.parseInt((linhaScanner.next())));
elemento.setDensity(Double.parseDouble((linhaScanner.next())));
elemento.setGroupBlock((linhaScanner.next()));
elemento.setYearDiscovered(Integer.parseInt((linhaScanner.next())));
System.out.println("asdfsdkjblkfb");
elementos.add(elemento);
linhaScanner.close();
}
scanner.close();
System.out.println(elementos);
}
}Em cada set, podem haver valores nulos.
Então se um valor for nulo, você não deseja usar set nele, é isso?
isso. ou alguma forma de fazer parsing de string nula pra outros tipos primitivos. Caso não tenha, vou precisar fazer um if e colocar um pula linha pra não pegar aquele campo.
Acredito que não é necessário pular a linha.
Você pode colocar uma verificação de null nos métodos set.
Ex.:
public void setAtomicMass(String mass) {
if (mass == null) {
mass = "0";
}
this.mass = mass;
}
isso funciona mesmo, valeu