Ich versuche, eine einfache Logik mit java.text.MessageFormat zu tun:Verschachtelte Auswahlklausel in MessageFormat?
MessageFormat cf = new MessageFormat(
"{0,choice, 1<hello|5<{1,choice,1<more than one|4<more than four}}");
Object[] array = {3, 1};
System.out.println(cf.format(array));
Mit Worten: Wenn der erste Parameter größer als 1 print „Hallo“ ist, wenn es größer als 5, als wenn das ist zweiter Parameter ist größer als 1 "mehr als eins" drucken, wenn der zweite Parameter größer als 4 ist "mehr als vier drucken".
fand ich niemand sagen, es ist unmöglich, aber ich erhalte eine Illegal:
Choice Pattern incorrect: 1<hello|5<{1,choice,1<more than one|4<more than four}
Gibt es eine Weise, die ich dies tun könnte? Vielen Dank!
Die ganze Stacktrace:
Exception in thread "main" java.lang.IllegalArgumentException: Choice Pattern incorrect: 1<hello|5<{1,choice,1<more than one|4<more than four}
at java.text.MessageFormat.makeFormat(Unknown Source)
at java.text.MessageFormat.applyPattern(Unknown Source)
at java.text.MessageFormat.<init>(Unknown Source)
at test.Test5.main(Test5.java:18)
Caused by: java.lang.IllegalArgumentException
at java.text.ChoiceFormat.applyPattern(Unknown Source)
at java.text.ChoiceFormat.<init>(Unknown Source)
... 4 more
Können Sie Ihre gesamte Stack-Trace setzen? – BaptisteL