某大学生的作业(3)--第一次回复之要求修改

来源:互联网 发布:pc端网络电视 编辑:程序博客网 时间:2024/04/30 07:23

大学生:

 

代码运行过了,很好,完全满足要求啦。

不过还有一点小问题~~就是Hashtable 没学过,而且今天老师上课讲了下说可以用Vector实现。 能不能再改下代码呢?

恩还有一点,就是英语语法问题了1. networks – list all networks connected to aparticular node 是指列出一点让然后显示所有联系的网络,貌似你和2刚好写反了,不过这个不用改了,我自己能改,只是顺便说一下~~

 

还有一点小问题~~

今天老师特意说了要用到object,就是说node和network的type都应该是object的,貌似你用的是String的。 所以还要改一下~~谢啦

 

 

回复:

object?String就是个Object咧。基本上所有的实体类的super class 都是java.lang.Object。。。
Hashtable不能用?因为考虑到你这里要比对key,才用的hashtable,要用Vector也行的。please wait....
ps:我E文不咋的,4级第二次才过,考了61分,555555。。。。。。

 

用Vector的改好了。英文没读懂的搞反了的地方,还是请你自己改下吧。。。。

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 Vector <String[]> nodes = new Vector <String[]>();

private static Node instance;

private Node() {
}

public static Node getInstance() {
if (instance == null) {
instance = new Node();
}
return instance;
}

public String getNodeByName(String name) {
for(int i=0;i <nodes.size();i++){
if(nodes.get(i)[0].equals(name)){
return nodes.get(i)[1];
}
}
return "";
}

public String getAllNames() {
String names = "";
try {
for(int i=0;i <nodes.size();i++){
String key = nodes.get(i)[0];
names += key + ",";
}
} catch (Exception e) {
e.printStackTrace();
}
return names.equals("") ? names : names.substring(0,
names.length() - 1);
}

public void addNodes(String nodeName, String netName) {
boolean isAdd = false;
for(int i=0;i <nodes.size();i++){
if(nodes.get(i)[0].equals(nodeName)){
nodes.get(i)[1] += "," + netName;
isAdd = true;
break;
}
}
if(!isAdd){
nodes.add(new String[]{nodeName,netName});
}
}

}

static class Network {
private Vector <String[]> networks = new Vector <String[]>();

private static Network instance;

private Network() {
}

public static Network getInstance() {
if (instance == null) {
instance = new Network();

}
return instance;
}

public String getNetworkByName(String name) {
for(int i=0;i <networks.size();i++){
if(networks.get(i)[0].equals(name)){
return networks.get(i)[1];
}
}
return "";
}

public String getAllNames() {

String names = "";
try {
for(int i=0;i <networks.size();i++){
String key = networks.get(i)[0];
names += key + ",";
}
} catch (Exception e) {
e.printStackTrace();
}
return names.equals("") ? names : names.substring(0,
names.length() - 1);
}

public void addNetworks(String netName, String nodeName) {
boolean isAdd = false;
for(int i=0;i <networks.size();i++){
if(networks.get(i)[0].equals(netName)){
networks.get(i)[1] += "," + nodeName;
isAdd = true;
break;
}
}
if(!isAdd){
networks.add(new String[]{netName,nodeName});
}

}
}
} // end class

原创粉丝点击