为什么不能首先使用?

时间:2016-10-18 12:05:04

标签: java static printf

嘿伙计们,由于私人字符串而无法运行#34;首先"和"最后"没有"使用。"

知道导致问题的原因是什么?谢谢!

public class Bananas{

    private String first;
    private String last;
    private static int members = 0;

    public Bananas(String fn, String ln){
        first = fn;
        last = ln;
        members++;

        System.out.printf("Constructor for %s %s, members in the club: %d\n", members);
    }
}

单独的课程

public class clasone {

    public static void main(String[] args){
        Bananas member1 = new Bananas ("Ted","O'Shea");
        Bananas member2 = new Bananas ("John","Wayne");
        Bananas member3 = new Bananas ("Hope","Go");
    }
}

5 个答案:

答案 0 :(得分:2)

这不是编译错误,而是运行时错误。正如它所述,你的printf格式是不正确的 - 它只需要三个参数(两个字符串和一个int),而你只传递onw(members)。从上下文来看,我假设您打算通过firstlast

System.out.printf("Constructor for %s %s, members in the club: %d\n", 
                   first, last, members);
// -- Here  -------^------^

答案 1 :(得分:1)

你的错误就在这一行:

 System.out.printf("Constructor for %s %s, members in the club: %d\n", members);

像这样改变:

System.out.printf("Constructor for %s %s, members in the club: %d\n", first, last, members);

消息the private strings "first" and "last" not being "used." |是警告,而不是错误。

错误"Contructor for 1 Exception in thread "main" java.util.MissingFormatArgumentException:是运行时错误,而不是编译错误。这与printf方法中缺少的论证者有关,因为在你的信息中你有String, String, Number%s %s %d

答案 2 :(得分:1)

您收到此错误是因为您的String格式的占位符没有相应的值,实际上您有两次%s和一次%d这意味着它需要两个要转换为String和整数或长整数的参数。

请改为尝试:

System.out.printf(
    "Constructor for %s %s, members in the club: %d\n", first, last, members
);

有关Formatter here的详细信息。

注意:您可以将\n格式的String替换为%n,效果与下一个相同:

System.out.printf(
    "Constructor for %s %s, members in the club: %d%n", first, last, members
);

答案 3 :(得分:1)

  

线程" main"中的1个异常的构造函数java.util.MissingFormatArgumentException:格式说明符'%s'

这是运行时错误,而不是编译时错误。这意味着您的格式中有三个值,但您只提供了一个。

答案 4 :(得分:0)

问题出现在下面一行:

System.out.printf("Constructor for %s %s, members in the club: %d\n", members);

因为你在String中使用了两个格式说明符,而在printf语句中使用了一个int,所以你必须为各自的格式说明符传递三个值,如下所示:

System.out.printf("Constructor for %s %s, members in the club: %d\n", first,last,members);

如果要仅将成员用于printf语句,请删除格式说明符,因此请更改:

System.out.printf("Constructor for the members in the club: %d\n", members);