嘿伙计们,由于私人字符串而无法运行#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");
}
}
答案 0 :(得分:2)
这不是编译错误,而是运行时错误。正如它所述,你的printf
格式是不正确的 - 它只需要三个参数(两个字符串和一个int),而你只传递onw(members
)。从上下文来看,我假设您打算通过first
和last
:
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);