Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java printf语句适用于同一类的一个实例,但不适用于另一个实例_Java - Fatal编程技术网

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成员是一个方法函数,而不是构造函数,这是合法的,但非常奇怪和混乱。你确定必须这样吗?我看不出第三次失败的具体原因。也许我们需要查看输入文件。