为什么printf在Java中不能正常工作?爪哇

时间:2019-02-05 05:59:12

标签: java printf uiprintformatter

我的日食软件中出现这种错误:

问题

为什么会出现错误?

代码:

    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)

  • Ouput除外:(

5 个答案:

答案 0 :(得分:4)

您可以指定两次参数,也可以在格式字符串中引用时指定索引:

System.out.printf("i am %1$s, my friend's name also %1$s", name);

答案 1 :(得分:3)

由于有两个%sprintf期望有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')标志,这将导致重复使用前一个格式说明符的参数。