添加日志和sysout



我被要求在类声明之前添加日志和sysout。我应该使用什么日志,如何添加Sysout??在这个项目中加入这些有什么意义?此外,我被要求为员工Id和名字创建常量字段。这是否意味着我应该创建将存储员工id和名字的常量变量??

public class Read {
  public static void main(String argv[]) {
    try {
    File fXmlFile = new File("/Users/mkyong/staff.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);

    doc.getDocumentElement().normalize();
    System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    NodeList nList = doc.getElementsByTagName("staff");
    System.out.println("----------------------------");
    for (int temp = 0; temp < nList.getLength(); temp++) {
        Node nNode = nList.item(temp);
        System.out.println("nCurrent Element :" + nNode.getNodeName());
        if (nNode.getNodeType() == Node.ELEMENT_NODE) {
            Element eElement = (Element) nNode;
            System.out.println("Staff id : " + eElement.getAttribute("id"));
            System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
            System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
            System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
            System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
        }
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
  }
}

我认为Sysout是指System.out.println,正如我所看到的,您已经添加了这些。

我认为logs意味着使用日志记录实现。使用java.utils.logging.Logger的一个例子是:

import java.util.logging.Logger;
public class Main {
  private static Logger LOGGER = Logger.getLogger(Main.class.getSimpleName());
  public static void main(String[] args) {
    LOGGER.info("Logging an INFO-level message");
  }
}

可以看到,Logger的一些目的是输出用于诊断(调试、监视)的文本。它可以输出文本到控制台,文件,数据库,并以任何你想要的方式格式化它。

与普通的System.out.println相比,使用记录器提供了更多的功能和控制。

还要求我为员工Id和名字创建常量字段

你明白了。这意味着为"firstname", "staff", "lastname"和任何其他字符串创建常量。然后,在需要使用该字符串的地方使用常量:

,

private static final String STAFF = "staff";
private static final String FIRST_NAME = "firstname";

这样做的好处是,您可以在一个地方看到所有常量,并在需要时轻松修改它们。想象一下在5个地方使用"firstname"。然后你意识到你想用"first_name"代替。如果你不使用常量,你将不得不改变5个位置,否则,只需改变1个位置。

"you have been asked",当你的作业不清楚时,你应该先问你的助教。

此外,"/Users/mkyong/staff.xml"在我看来非常非常可疑。因为mkyong是一个非常有名的开发者。你不应该在不了解它们的情况下从网上拿例子复制/粘贴它们。

也就是说,你应该将静态final字段声明为常量,比如
private static final String STAFF_ID = "Staff id"
private static final String FIRST_NAME = "First Name"

,然后在代码中替换这些值。

对于日志和sysout, sysout只是意味着添加

System.out.println("something you would like to print")

Logging做同样的事情,但是使用一个框架并自动提供更多信息,例如打印行时间和触发打印的类。它还在何时打印消息方面提供了灵活性。先看这个http://en.wikipedia.org/wiki/Java_logging_framework

最新更新