Java printf语句适用于同一类的一个实例,但不适用于另一个实例
这是我第一次发帖,希望一切顺利。我对以下程序有问题Java printf语句适用于同一类的一个实例,但不适用于另一个实例,java,Java,这是我第一次发帖,希望一切顺利。我对以下程序有问题 public class Project3 { public static String fName = "drum_members.txt"; private static Scanner fin; private static PrintWriter fout; private static Scanner keyboard = new Scanner(System.in); public stat
public class Project3 {
public static String fName = "drum_members.txt";
private static Scanner fin;
private static PrintWriter fout;
private static Scanner keyboard = new Scanner(System.in);
public static void main(String[] args) {
String membershipLength;
Member m_1 = new Member();
Member m_2 = new Member();
Member m_3 = new Member();
Member m_4 = new Member();
try {
fin = new Scanner(new File(fName));
} catch (FileNotFoundException e) {
System.err.println("Error opening the file " + fName);
System.exit(1);
}// end try
m_1.Member();
m_1.calculateFreeItems();
m_1.printMember();
m_2.Member();
m_2.calculateFreeItems();
m_2.printMember();
m_3.Member();
m_3.calculateFreeItems();
m_3.printMember();
m_4.Member();
m_4.calculateFreeItems();
m_4.printMember();
}
public static class Member{
public int id;
public String name;
public String nickName;
public int monthsMembership;
public String favoriteItem;
public int freeItems;
public void Member()
{
name = fin.next();
nickName = fin.next();
monthsMembership = fin.nextInt();
favoriteItem = fin.next();
fin.nextLine();
}
private int calculateFreeItems()
{
freeItems = monthsMembership/12 +1;
return (freeItems);
}
public void setFavoriteitem()
{
System.out.print("Enter new favorite item: ");
favoriteItem = keyboard.next();
}
private String calculatemembershipLength()
{
if(monthsMembership < 12)
return (monthsMembership + "months,");
else
return (monthsMembership/12 + " years, " + monthsMembership%12 + " months,");
}
public void printMember()
{
String months = this.calculatemembershipLength();
System.out.printf("Member #1 - NAME: %22s, NICKNAME:%22s, MEMBER SINCE: %22s FAVORITE ITEM:%22s, FREE ITEMS PER MONTH: %d\n",
name, nickName, months, favoriteItem, freeItems);
}
}
}
调试后,我只知道printf语句第三次不起作用,第四次可以起作用,没问题。非常感谢您提供的任何帮助。您所说的“无效”是什么意思?您的do Member m_1=新会员;后来,m_1.成员;你不理解构造函数也许你是对的,但据我所知,我在第二条语句中调用了一个函数。之所以这样写,是因为它必须用于赋值。@user3448297 public void成员是一个方法函数,而不是构造函数,这是合法的,但非常奇怪和混乱。你确定必须这样吗?我看不出第三次失败的具体原因。也许我们需要查看输入文件。