1

我在我的 Eclipse 软件中遇到了这种类型的错误:

问题

为什么我会收到错误消息?

代码 :

    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);
        }
    }

错误信息:

线程“main”中的异常 java.util.MissingFormatArgumentException:java.base/java.util.Formatter.format(Formatter.java:2672) at java.base/java.io.PrintStream.format( PrintStream.java:1053) 在 java.base/java.io.PrintStream.printf(PrintStream.java:949) 在 loops.Escapey.main(Escapey.java:5)

  • 输出除外:(
4

5 回答 5

4

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

System.out.printf("i am %1$s, my friend's name also %1$s", name);
于 2019-02-05T06:04:11.650 回答
3

通过有%s两个printf期望two参数

喜欢

System.out.printf("i am %s, my friend's name also %s",name, name);
于 2019-02-05T06:00:46.163 回答
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() 方法快速参考

Java 格式 - Java printf 值索引 // explicit indexing, relative indexing

于 2019-02-05T06:03:20.747 回答
1

一种非常模糊的方法:

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

我实际上从未使用过它,但在Formatter.

另一种按位置引用参数的方法是使用 '<'( '\u003c') 标志,这会导致重新使用前一个格式说明符的参数。

于 2019-02-05T07:23:42.517 回答
1

用这个 ...

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

你给出了两个说明符。所以你需要在这里给出两次名字。

于 2019-02-05T06:02:37.703 回答