ورود

View Full Version : سوال: چجوری به خروجی اضافه کنم؟



mm2236
شنبه 10 بهمن 1388, 15:27 عصر
سلام دوستان من یه فایل دارم که باید از توش یه سری اطلاعات در بیارم با دوستم که جاوا کار هست تا یه جائیشو نوشتیم الان 90% اون تموم شده فقط یه جاش گیرکردیم و اون اینکه میخایم به خروجی یه چیزه دیگه هم اضافه کنیم میشه شما کمک کنین ؟

این برنامه ماست :

public class Test {

public static void main(String[] args) throws IOException {
Test test = new Test();
test.execute();
}

private static String TYPE_XTSM = "XTSM";
private static String TYPE_XTS = "XTS";
private static String TYPE_XRX = "XRX";
private static String TYPE_XHAN = "XHAN";

private void execute() throws IOException {
InputStream in = null;
BufferedReader br = null;
TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap = new TreeMap<Integer, TreeMap<Integer, Integer>>();
try {
in = Test.class.getResourceAsStream("db.txt");
br = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = br.readLine()) != null) {
Record rec = new Record(line);
processRecord(xtsmMap, rec);
}
} finally {
if (br != null) {
br.close();
}
}
printResults(xtsmMap);
}

private void processRecord(
TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap, Record rec) {
TreeMap<Integer, Integer> xtsMap;
if (xtsmMap.containsKey(rec.getXtsm())) {
xtsMap = xtsmMap.get(rec.getXtsm());
} else {
xtsMap = new TreeMap<Integer, Integer>();
xtsmMap.put(Integer.valueOf(rec.getXtsm()), xtsMap);
}
if (xtsMap.containsKey(rec.getXts())) {
Integer count = xtsMap.get(rec.getXts());
xtsMap.put(Integer.valueOf(rec.getXts()), Integer.valueOf(count
.intValue() + 1));
} else {
xtsMap.put(Integer.valueOf(rec.getXts()), Integer.valueOf(1));
}
}

private void printResults(
TreeMap<Integer, TreeMap<Integer, Integer>> xtsmMap) {
System.out.println("Type\t\tTotal");
Set<Integer> xtsmSet = xtsmMap.navigableKeySet();
for (Integer xtsm : xtsmSet) {
TreeMap<Integer, Integer> xtsMap = xtsmMap.get(xtsm);
Set<Integer> xtsSet = xtsMap.navigableKeySet();
for (Integer xts : xtsSet) {
Integer count = xtsMap.get(xts);
String outputLine = TYPE_XTSM + ":" + xtsm + "/" + TYPE_XTS
+ ":" + xts + "\t" + count;
System.out.println(outputLine);
}
}
}

private static class Record {

private Integer xtsm, xts, xrk, xhan;

Record(String line) {
StringTokenizer st = new StringTokenizer(line, "/");
while (st.hasMoreTokens()) {
String token = st.nextToken();
String type = token.substring(0, token.indexOf(":"));
String valueStr = token.substring(token.indexOf(":") + 1, token
.length());
Integer value = Integer.valueOf(valueStr);
if (TYPE_XTSM.equals(type)) {
xtsm = value;
} else if (TYPE_XTS.equals(type)) {
xts = value;
} else if (TYPE_XRX.equals(type)) {
xrk = value;
} else if (TYPE_XHAN.equals(type)) {
xhan = value;
}
}
}

public Integer getXtsm() {
return xtsm;
}

public Integer getXts() {
return xts;
}

public Integer getXrk() {
return xrk;
}

public Integer getXhan() {
return xhan;
}
}

و من این خروجی رو ازش گرفتم


Type Total
XTSM:0/XTS:0 29
XTSM:0/XTS:1 29
XTSM:0/XTS:2 29
XTSM:1/XTS:0 29
XTSM:1/XTS:1 29
XTSM:1/XTS:2 29
XTSM:2/XTS:0 29
XTSM:2/XTS:1 29
XTSM:2/XTS:2 29
XTSM:3/XTS:0 14
XTSM:3/XTS:1 14
XTSM:3/XTS:2 14
XTSM:4/XTS:0 13

که درست هست ولی کامل نیست ببینید این یه مثال از فایل منه که با توجه به اون این خروجی رو داده :
http://www.4shared.com/file/210566155/c080d93a/db_online.html

من همون خروجی رو میخام منتها با این تفاوت که در هر خط مقدار ZTYPE رو هم برام برگردونه یعنی مثلا اینجوری :

Type Total
XTSM:0/XTS:0 29 such as this : TCHF_HLF:28 TCHSD:1 TCHFULL:0
XTSM:0/XTS:1 29
XTSM:0/XTS:2 29
XTSM:1/XTS:0 29
XTSM:1/XTS:1 29
XTSM:1/XTS:2 29
XTSM:2/XTS:0 29
XTSM:2/XTS:1 29
XTSM:2/XTS:2 29
XTSM:3/XTS:0 14
XTSM:3/XTS:1 14
XTSM:3/XTS:2 14
XTSM:4/XTS:0 13

ZTYPE یکی از این 3 حالت میتونه باشه برطبق اون فایلی که download کردین:
TCHF_HLF TCHSD TCHFULL

لطفا بگید چجوری count اینا رو هم بهش اضافه کنم

ممنون

یا علی






}