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
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