某大学生的作业(2)--第一次回复

代码说明:由于你提供的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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值