2016-07-06 5 views
1

Ich weiß, dass "wie aus String in char konvertieren?" wurde oft gefragt, aber ich weiß nicht, warum dies ein Problem für mein Projekt ist, da ich nicht glaube, dass ich versuche, von einem Zeichen in eine Zeichenfolge zu konvertieren.Javaform: wie man ein char in diesem Fall

Dies ist mein Code: (. Die Dialoge mehr Nachrichten nur Aussagen Debuggen wurden, um zu sehen, wo das Programm fehlschlägt)

private void BtnAddClientActionPerformed(java.awt.event.ActionEvent evt) {            

    try { 

     ArrayList<Cliente> clientes = ClienteDataSer.LoadData(); 

     Cliente C = new Cliente(); 
     JOptionPane.showMessageDialog(null, "reading: dni"); 
     C.setDni(Integer.parseInt(TxTDni.getText())); 
     JOptionPane.showMessageDialog(null, "reading: nombre"); 
     C.setNombre(TxTNombre.getText()); 
     JOptionPane.showMessageDialog(null, "reading: apellido"); 
     C.setApellido(TxTApellido.getText()); 
     JOptionPane.showMessageDialog(null, "reading: sexo"); 
     C.setSexo(TxTSexo.getText()); //<--- error: "Incopatible types:String cannot be converted to char 
     JOptionPane.showMessageDialog(null, "reading: edad"); 
     C.setEdad(Integer.parseInt(TxTEdad.getText())); 
     JOptionPane.showMessageDialog(null, "Se añade a la tabla clientes"); 
     clientes.add(C); 
     JOptionPane.showMessageDialog(null, "Se guarda"); 
     ClienteDataSer.saveData(clientes); 
     JOptionPane.showMessageDialog(null, "Se corre el metodo llenartablaclientes"); 
     llenarTablaClientes(); 
     JOptionPane.showMessageDialog(null, "Hecho"); 
    } catch (Exception e) { 
     JOptionPane.showMessageDialog(null, "Faltan campos por llenar"); 
    } 

} 

Hier ein Auszug aus der Klasse ist TxTSexo.getText() herkommt:

public char getSexo() { 
    return sexo; 
} 

public void setSexo(char sexo) { 
    if (this.sexo == 'M'|| this.sexo == 'm'|| this.sexo == 'f'|| this.sexo == 'F') 
     this.sexo = sexo; 
} 

Ich habe bereits versucht, in String zu konvertieren, aber es heißt wieder Fehler.

Wenn jemand will, das ganze Projekt ist hier die link lesen, vielleicht gibt es etwas, was Sie damit machen können.

Antwort

2

Die sexo Eigenschaft der beteiligten Klasse char eingeben. TxTSexo.getText() gibt eine String zurück. Dies ist nicht dasselbe und es gibt keine automatische Konvertierung zwischen ihnen. Sie müssen eine geeignete Konvertierung selbst durchführen, um TxTSexo.getText() zu verwenden, um den Wert der Eigenschaft sexo festzulegen.

Wenn Sie auf TxTSexo.getText() verlassen können immer einen nicht null String zurück genau ein Zeichen enthält, oder das gewünschte Zeichen als erstes enthält, dann könnte man einfach C.setSexo(TxTSexo.getText().charAt(0)) verwenden.

Wenn Sie TxTSexo.getText()null oder leer oder enthält führende Leerzeichen ist, aufzunehmen brauchen, dann können Sie stattdessen tun

char sexoChar; 

try { 
    sexoChar = TxTSexo.getText().trim().charAt(0); 
} catch (NullPointerException | IndexOutOfBoundsException e) { 
    sexoChar = ' '; 
} 

C.setSexo(sexoChar); 

Es ist möglich, dass Sie eine weitere Validierung oder Konvertierung durchführen möchte.

Verwandte Themen