- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我得到了 main 和 TEXT,但所有其他类和实现都可能是错误的原因。
已更新
import java.util.*;
import java.lang.*;
import java.text.*;
import java.math.*;
class BankAccount extends AccountHolder {
private static final String TEXT = "I am a {0} account with {1} units of {2}
currency";
public static void main(String args[] ) throws Exception {
List<BankAccount> accounts = new ArrayList<BankAccount>();
accounts.add(new SavingsAccount("USD",3));//Savings
accounts.add(new SavingsAccount("EUR",2));//Savings
accounts.add(new CheckingAccount("HUF",100));//Checking
accounts.add(new CheckingAccount("COP",10000));//Checking
accounts.add(new BrokerageAccount("GBP",2));//Brokerage
accounts.add(new BrokerageAccount("INR",600));//Brokerage
accounts.stream().forEach(
account -> System.out.println(
MessageFormat.format(TEXT,
new Object[]{
account.getAccountType().getName(),//make this work
account.getUnits(),//make this work
account.getCurrency()//make this work
})));
}
AccountHolder customer = new AccountHolder();
String units;
Integer currency;
void setCustomer(AccountHolder acctHolder) {
this.customer = acctHolder;
}
AccountHolder getAccountType() {
return customer;
}
//set units
void setUnits(String unit) {
this.units = unit;
}
void setType(String type) {
customer.setType(type);
}
String getUnits() {
return units;
}
//set currency
void setCurrency(Integer curr) {
this.currency = curr;
}
Integer getCurrency() {
return currency;
}
}
class SavingsAccount extends BankAccount {
SavingsAccount(String unit, Integer curr) {
super.setName("Saving");
super.setUnits(unit);
super.setCurrency(curr);
}
}
class CheckingAccount extends BankAccount {
CheckingAccount(String unit, Integer curr) {
super.setName("Checking");
super.setUnits(unit);
super.setCurrency(curr);
}
}
class BrokerageAccount extends BankAccount {
BrokerageAccount(String unit, Integer curr) {
super.setName("Brokerage");
super.setUnits(unit);
super.setCurrency(curr);
}
}
class AccountHolder {
String name;
String acctType;
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
void setType(String type) {
this.acctType = type;
}
String getType() {
return acctType;
}
}
更新修订
import java.util.*;
import java.lang.*;
import java.text.*;
import java.math.*;
class BankAccount extends AccountHolder {
private static final String TEXT = "I am a {0} account with {1,number,#}
units of {2} currency";
public static void main(String args[] ) throws Exception {
List<BankAccount> accounts = new ArrayList<BankAccount>();
accounts.add(new SavingsAccount("USD",3));//Savings
accounts.add(new SavingsAccount("EUR",2));//Savings
accounts.add(new CheckingAccount("HUF",100));//Checking
accounts.add(new CheckingAccount("COP",10000));//Checking
accounts.add(new BrokerageAccount("GBP",2));//Brokerage
accounts.add(new BrokerageAccount("INR",600));//Brokerage
accounts.stream().forEach(
account -> System.out.println(
MessageFormat.format(TEXT,
new Object[]{
account.getAccountType().getName(),//make this work
account.getUnits(),//make this work
account.getCurrency()//make this work
})));
}
AccountHolder customer = new AccountHolder();
Integer units;
String currency;
void setCustomer(AccountHolder acctHolder) {
this.customer = acctHolder;
}
AccountHolder getAccountType() {
return customer;
}
//set units
void setUnits(Integer unit) {
this.units = unit;
}
void setType(String type) {
customer.setType(type);
}
Integer getUnits() {
return units;
}
//set currency
void setCurrency(String curr) {
this.currency = curr;
}
String getCurrency() {
return currency;
}
}
class SavingsAccount extends BankAccount {
SavingsAccount(String curr, Integer unit) {
super.getAccountType().setName("Saving");
super.setUnits(unit);
super.setCurrency(curr);
}
}
class CheckingAccount extends BankAccount {
CheckingAccount(String curr, Integer unit) {
super.setUnits(unit);
super.getAccountType().setName("Checking");
super.setCurrency(curr);
}
}
class BrokerageAccount extends BankAccount {
BrokerageAccount(String curr, Integer unit) {
super.getAccountType().setName("Brokerage");
super.setUnits(unit);
super.setCurrency(curr);
}
}
class AccountHolder {
String name;
String acctType;
String getName() {
return name;
}
void setName(String name) {
this.name = name;
}
void setType(String type) {
this.acctType = type;
}
String getType() {
return acctType;
}
}
这是控制台堆栈跟踪:
Exception in thread "main" java.lang.IllegalArgumentException: Cannot format given Object as a Number
at java.text.DecimalFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at java.text.MessageFormat.subformat(Unknown Source)
at java.text.MessageFormat.format(Unknown Source)
at java.text.Format.format(Unknown Source)
at java.text.MessageFormat.format(Unknown Source)
at BankAccount.lambda$main$0(BankAccount.java:22)
at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(Unknown Source)
at java.util.stream.ReferencePipeline$Head.forEach(Unknown Source)
at BankAccount.main(BankAccount.java:20)
我尝试将货币返回为整数,如图所示,但也尝试返回数字,并进行转换,但都返回有点类似的错误。使用字符串没有问题,只有创建新对象并传递数值时才会出现问题。假设类型是Object。
编辑我将给定输入的单位更改为数字类型。现在我明白了
Exception in thread "main" java.lang.NumberFormatException: For input
string:
"USD"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.valueOf(Unknown Source)
at SavingsAccount.<init>(BankAccount.java:69)
at BankAccount.main(BankAccount.java:13)
最佳答案
BankAccount.units
字段的类型为 String
但是您试图将其显示为 {1,number,#}
的数字格式。
要么更改 units
可以转换为数字的东西(例如 Integer
)或使用不同的格式来打印它(例如仅使用 {1}
按原样显示)。
关于java - 格式化 Java MessageFormat 文本时出现 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51315346/
如果有的话我找不到我的错误。 我将 2 和 1 作为 MessageFormat 的参数,但它返回 1 和 1. 我无法克服这个问题。我也找不到任何有关它的已知问题。 有办法解决这个问题吗? 我的代码
我有一个像这样的字符串: {0}/suhdp run -command "suhilb" -input /sufiles/{1} -output /seismicdata/mr_files/{2}/
这是从文件中读取的字符串模板。 Dialogue: {0} Dialogue: {1} 从文件中读取后,我想使用给定的数组格式化该字符串。 var sentences = arrayOf("hello
我在 strings.xml 文件中定义了一个字符串: Here\'s a song I\'ve created just for you\! {0} 然后我获取该字符串并使用 MessageForm
在 Java MessageFormat 中处理空值的最佳方式是什么 MessageFormat.format("Value: {0}",null); => Value: null 但实际上“值:”会
我试图用 java.text.MessageFormat 做一个简单的逻辑: MessageFormat cf = new MessageFormat( "{0,choice, 1(Unknown S
我在使用 java.text.MessageFormat 对象时遇到问题。 我正在尝试创建 SQL 插入语句。问题是,当我做这样的事情时: MessageFormat messageFormat =
我有以下 JSON 格式的字符串: String message = "{ \"message\": \"Hello World!\" }"; 但我想将其设置为使用 MessageFormat: St
在Java中使用MessageFormat类在字符串中传递不同的变量时 System.out.println(MessageFormat.format("I want to resolve this
我正在使用 DisplayTag 表库来呈现我的表,它提供了为数据指定 messageFormat 模式的选项。我很难找到正确的格式以下是我尝试编写的格式 1. given a double pr
是否建议使用java.text.MessageFormat对字符串进行操作?或者有什么替代方案吗? 最佳答案 恕我直言,MessageFormats当您需要在外部定义它们时特别有用,例如通过资源。 您
我有一组由 Java 生成的步行图。整个图表的标签在Calibri 8中是一致的。除非该值为 0.00,这在 Arial 8 中很突出。 我追踪到这个类: import java.text.Messa
我的应用程序使用 log4j 进行日志记录,通常我通过检查是否启用特定级别来进行日志记录,然后像下面这样记录 if(Logger.isApplicationDebugEnabled()){ Lo
我正在尝试修复禁用 api 的错误。我有一个错误,内容是: [forbiddenapis] Forbidden method invocation: java.text.MessageFormat#f
是否可以在 logback 中使用 MessageFormat? 我看到它使用 slf4j MessageFormatter,因为它更快,如这里所述: Out of curiosity -- why
我明白了,在 Java 中你可以用 MessageFormat 和一个像 "You said {0} just now" 这样的字符串 StringBuffer 和类似的结构 StringBuffer
是否有可能为 java.text.MessageFormat 定义一种格式,该格式可以在不使用 .toString() 对分隔符和其他对象进行分组的情况下格式化数字? 我的麻烦是,我必须格式化一个我事
我用过MessageFormat使用参数格式化文件的内容并获取具有正确参数的格式化字符串。(我用它来格式化电子邮件正文。最后我每个电子邮件正文都有一个文件,应用程序需要发送很多不同的电子邮件,所以我得
在我当前的项目中,我们使用字符串的属性文件。然后使用 MessageFormat 对这些字符串进行“格式化”。不幸的是,MessagFormat 对单引号的处理在使用大量撇号的语言(例如法语)中成为一
我传递的文本是 {} 填充符和文本的组合。我正在尝试用一些值填充 {} 并尝试使用 MessageFormat。 String sss = "{0}SomeText{1}\'.{2}SomeText{
我是一名优秀的程序员,十分优秀!