我的日食软件中出现这种错误:
问题
为什么会出现错误?
代码:
package loops;
public class Escapey {
public static void main(String[] args) {
String name ="micheal";
System.out.printf("i am %s, my friend name also %s",name);
}
}
错误消息:
线程“主”中的异常java.util.MissingFormatArgumentException:java.base / java.util.Formatter.format(Formatter.java:2672)处的格式说明符'%s' .loop(Escapey.main(Escapey.java:5)处的.format(PrintStream.java:1053)位于java.base / java.io.PrintStream.printf(PrintStream.java:949)
答案 0 :(得分:4)
您可以指定两次参数,也可以在格式字符串中引用时指定索引:
System.out.printf("i am %1$s, my friend's name also %1$s", name);
答案 1 :(得分:3)
由于有两个%s
,printf
期望有two
个参数
喜欢
System.out.printf("i am %s, my friend's name also %s",name, name);
答案 2 :(得分:2)
一种解决方案,
System.out.print("i am " + name + ", my friend name also " + name); // If you want to continue on same line
System.out.println("i am " + name + ", my friend name also " + name); // If you want to continue on next line
由于您有两个%s
,因此需要两个参数,因此您可以指定两个参数。
System.out.printf("i am %s, my friend name also %s",name, name);
或在字符串中指定索引。 %1$s
将获得第一个参数,在这种情况下为name
。
System.out.printf("i am %1$s, my friend's name also %1$s", name);
在此处了解更多! :)
Java printf( ) Method Quick Reference
Java Format - Java printf Value Index // explicit indexing, relative indexing
答案 3 :(得分:1)
使用此...
System.out.printf("i am %s, my friend name also %s",name, name);
您要给出两个说明符。因此,您需要在此处两次命名。
答案 4 :(得分:1)
一种相当晦涩的方法:
System.out.printf("i am %s, my friend's name also %<s", name);
我从没使用过它,但是在Formatter
的文档中已经提到过。
按位置引用参数的另一种方法是使用
'<'
('\u003c'
)标志,这将导致重复使用前一个格式说明符的参数。