DataOutputStream的writeUTF方法参数不匹配错误求助
问题分析与解决
错误原因
你的代码中调用DataOutputStream.writeUTF()方法时传入了非String类型的参数:accountObj.getBalance()是double类型,accountObj.getAccountNumber()是int类型,但writeUTF()仅接受String类型参数,因此触发编译错误。
解决方案
方案1:将数值转为String后写入
如果只需要把数值以文本形式存储,直接将double和int转为String即可,常用两种方式:
- 使用
String.valueOf()方法(推荐,可读性更高) - 利用字符串拼接自动转换(
数值 + "")
修改后的代码:
for (Account accountObj : accounts) { System.out.print(accountObj); account.writeUTF(accountObj.getAccountHolderName()); account.writeUTF(accountObj.getAccountType()); account.writeUTF(String.valueOf(accountObj.getBalance())); account.writeUTF(String.valueOf(accountObj.getAccountNumber())); }
方案2:使用数值专属写入方法(更适合后续还原数值)
如果后续需要将存储的值还原为double或int类型,推荐使用DataOutputStream提供的对应数值写入方法,这样读取时可以直接还原类型,避免字符串解析的麻烦:
- double类型用
writeDouble() - int类型用
writeInt()
示例代码:
for (Account accountObj : accounts) { System.out.print(accountObj); account.writeUTF(accountObj.getAccountHolderName()); account.writeUTF(accountObj.getAccountType()); account.writeDouble(accountObj.getBalance()); account.writeInt(accountObj.getAccountNumber()); }
注意:使用此方案时,读取数据必须严格遵循写入的顺序(先读两个UTF字符串,再读double,最后读int),否则会出现数据错乱。
内容的提问来源于stack exchange,提问作者gangrx
相关产品推荐
相关产品推荐

