Javaform:在这种情况下如何使用char

时间:2016-07-06 21:40:15

标签: java string char

我知道“如何从String转换为char?”已被问过很多次,但我不知道为什么这对我的项目来说是一个问题,因为我不认为我正在尝试将字符串转换为字符串。

这是我的代码:

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");
    }

}

(多个消息对话框只是调试语句,以查看程序失败的位置。)

以下是来自TxTSexo.getText()课程的摘录:

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

我已经尝试过转换为String但它再次说错误。

如果有人想在这里阅读整个项目的是link,也许你可以用它来做其他事情。

1 个答案:

答案 0 :(得分:2)

所涉及的类的sexo属性具有类型charTxTSexo.getText()会返回String。这些不是一回事,它们之间没有自动转换。您需要自己执行合适的转换才能使用TxTSexo.getText()设置sexo属性的值。

如果你可以依靠TxTSexo.getText()总是返回一个非null字符串,其中只包含一个字符,或者包含所需字符作为第一个字符,那么你可以简单地使用C.setSexo(TxTSexo.getText().charAt(0))

如果您需要TxTSexo.getText() null或空白或包含前导空格,那么您可以改为

char sexoChar;

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

C.setSexo(sexoChar);

您可能希望执行进一步的验证或转换。