2016-07-06 5 views
1

「文字列をcharに変換する方法は知っていますか?何度も尋ねられてきましたが、私はなぜ私がcharから文字列に変換しようとしているとは思わないので、これが私のプロジェクトの問題であるのか分かりません。Javaform:この場合に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です。それ以外にも何かできることがあります。

答えて

2

関連するクラスのsexoプロパティは、タイプcharです。 TxTSexo.getText()Stringを返します。これらは同じものではなく、それらの間に自動変換はありません。 TxTSexo.getText()を使用してsexoプロパティの値を設定するには、適切な変換を自分で実行する必要があります。

あなたは常に1つの文字、またはその最初のような所望の文字を含むを含む非null文字列を返すようにTxTSexo.getText()に頼ることができる場合は、単に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); 

あなたがさらに検証や変換を実行したいと思うことがある行う可能性があります。

関連する問題