代码说明:由于你提供的Main里面只有两个地方可以 // expand here .............
只好写了一个比较笨的,只在这两个地方加代码,但用到了java.io.*和java.util.*,因为你Main里面已经import了,所以应该不算违规。。。。另外两个类不在 //expand那里,是因为你要求要自定义class的
import java.io.*;
import java.util.*;
/**
* Exercise 29
*
*/
public class Main {
public static void main(String args[]) throws IOException {
// read input file and build data structure in model
FileReader reader = new FileReader("E://input.txt");
BufferedReader bReader = new BufferedReader(reader);
String line = bReader.readLine();
while (line != null) { // check for eof
try {
StringTokenizer parseString = new StringTokenizer(line);
String delimiters = " (),/t/n";
String connectKeyword = parseString.nextToken(delimiters);
String nodeName = parseString.nextToken(delimiters);
String netName = parseString.nextToken(delimiters);
Node.getInstance().addNodes(nodeName, netName);
Network.getInstance().addNetworks(netName, nodeName);
// expand here to build data structure .............
}
catch (NoSuchElementException e) {
System.out.println("Invalid input line: " + line
+ ". Skipping ....");
}
line = bReader.readLine();
}
// allow user to query data structure
options();
}
/**
* Prompt users with options to either search for node, or network, or to
* quit
*/
public static void options() {
Scanner keyboard = new Scanner(System.in);
System.out.println("Which search do you require?");
System.out
.println("1. networks – list all networks connected to a particular node");
System.out
.println("2. nodes – list all the nodes connected to a particular network");
System.out.println("3. quit. ");
System.out.println();
while (keyboard.hasNext()) {
String s = keyboard.next();
if (s.equals("1")) {
System.out.println("please type a network name, all name is:");
System.out.println(Network.getInstance().getAllNames());
System.out.println();
while (keyboard.hasNext()) {
String name = keyboard.next();
if (Network.getInstance().getNetworkByName(name) == null) {
System.out
.println("please type a network name, all name is:");
System.out.println(Network.getInstance().getAllNames());
System.out.println();
} else {
System.out.println(Network.getInstance()
.getNetworkByName(name));
System.out.println("Which search do you require?");
System.out
.println("1. networks – list all networks connected to a particular node");
System.out
.println("2. nodes – list all the nodes connected to a particular network");
System.out.println("3. quit. ");
System.out.println();
break;
}
}
} else if (s.equals("2")) {
System.out.println("please type a node name, all name is:");
System.out.println(Node.getInstance().getAllNames());
while (keyboard.hasNext()) {
String name = keyboard.next();
if (Node.getInstance().getNodeByName(name) == null) {
System.out
.println("please type a network name, all name is:");
System.out.println(Node.getInstance().getAllNames());
System.out.println();
} else {
System.out.println(Node.getInstance().getNodeByName(
name));
System.out.println("Which search do you require?");
System.out
.println("1. networks – list all networks connected to a particular node");
System.out
.println("2. nodes – list all the nodes connected to a particular network");
System.out.println("3. quit. ");
System.out.println();
break;
}
}
} else if (s.equals("3")) {
System.out.println("quit");
System.out.println();
System.exit(0);
} else {
System.out.println("only 1,2,3 would be right");
System.out.println("Which search do you require?");
System.out
.println("1. networks – list all networks connected to a particular node");
System.out
.println("2. nodes – list all the nodes connected to a particular network");
System.out.println("3. quit. ");
System.out.println();
}
}
// expand here .............
} // end options
static class Node {
private Hashtable <String, String> nodes = new Hashtable <String, String>();
private static Node instance;
private Node() {
}
public static Node getInstance() {
if (instance == null) {
instance = new Node();
}
return instance;
}
public String getNodeByName(String name) {
return nodes.get(name);
}
public String getAllNames() {
String names = "";
try {
Enumeration <String> keys = nodes.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
names += key + ",";
}
} catch (Exception e) {
e.printStackTrace();
}
return names.equals("") ? names : names.substring(0,
names.length() - 1);
}
public void addNodes(String nodeName, String netName) {
if (nodes.containsKey(nodeName)) {
nodes.put(nodeName, nodes.get(nodeName) + "," + netName);
} else {
nodes.put(nodeName, netName);
}
}
}
static class Network {
private Hashtable <String, String> networks = new Hashtable <String, String>();
private static Network instance;
private Network() {
}
public static Network getInstance() {
if (instance == null) {
instance = new Network();
}
return instance;
}
public String getNetworkByName(String name) {
return networks.get(name);
}
public String getAllNames() {
String names = "";
try {
Enumeration <String> keys = networks.keys();
while (keys.hasMoreElements()) {
String key = keys.nextElement();
names += key + ",";
}
} catch (Exception e) {
e.printStackTrace();
}
return names.equals("") ? names : names.substring(0,
names.length() - 1);
}
public void addNetworks(String netName, String nodeName) {
if (networks.containsKey(netName)) {
networks.put(netName, networks.get(netName) + "," + nodeName);
} else {
networks.put(netName, nodeName);
}
}
}
} // end class
某大学生的作业(2)--第一次回复
最新推荐文章于 2024-07-18 15:19:40 发布