0

我正在使用 bluej 为用户列表制作程序。当我编译并运行代码时,bluej 不会给出任何错误。但是当我创建一个类的新实例时,它看起来什么都没有发生。从我的实例打印一行到我的终端窗口不起作用。如何让我的实例打印显示在我的终端窗口中?

   import java.util.*;
   import java.text.*;

   public class Main{
       private ArrayList<List> userlists;
       public Main(){
          System.out.print('\f');
          System.out.println("this text will show.");
          newlist("listname");
       }
       public void newlist(String listname){
          System.out.println("this text will show too!");
          List userlist = new List(listname); //terminal does not show lines printed by constructor of List?
          userlists.add(userlist);
          userlist.printSomeText(); //second attempt to print a line, does not show in terminal.
       }
    }

    public class List {
        private String listname;
        public List(String ln) {
            listname = ln;
            System.out.println("this text does not show.");
        }
        public void printSomeText(){
            System.out.println("this text neither.");      
        }
    }

我通过(首先编译两个类,然后)右键单击 bluej 界面中的 Main 类并选择 new Main() 来运行它。当我这样做时,会出现一个终端窗口,其中显示:

this text will show.
this text will show too!

但它没有显示:

this text will show.
this text will show too!
this text does not show.
this text neither.

它没有显示任何错误,所以我想知道出了什么问题以及如何获得第二个结果,显示这四行。

4

2 回答 2

0

不要被迷惑

public Main() {
   ...
}

这是一个构造函数。您需要一个main方法入口点来调用它:

public static void main(String[] args) {
   new Main();
}

旁白:不要忘记实例化你的userlists ArrayList以避免得到NPE

private ArrayList<List> userlists = new ArrayList<>();
于 2012-12-09T02:12:16.137 回答
0

首先,您public在同一个Java文件中没有两个类。

其次,您必须在使用该变量或字段之前初始化该变量,这在您的问题中没有发生。我已经对您的代码进行了一些修改,这些修改将根据您的需要进行,并且还会打印您想要打印的第二行。

import java.util.ArrayList;

public class Main {
    private ArrayList<List> userlists;

    public Main() {
        userlists = new ArrayList<List>();
        System.out.print('\f');
        System.out.println("this text will show.");
        newlist("listname");
    }

    public void newlist(String listname) {
        System.out.println("this text will show too!");
        List userlist = new List(listname); // terminal does not show lines
                                            // printed by constructor of List?
        userlists.add(userlist);
        userlist.printSomeText(); // second attempt to print a line, does not
                                    // show in terminal.
    }

    public static void main(String ... args){
        new Main();
    }
}

class List {
    private String listname;

    public List(String ln) {
        listname = ln;
        System.out.println("this text does not show.");
    }

    public void printSomeText() {
        System.out.println("this text neither.");
    }
}
于 2012-12-09T02:26:57.607 回答