JAVA

Programavimas bei interneto svetainių kūrimas
nutonas
Posts: 15
Joined: Wed Feb 25, 2009 9:59 pm

JAVA

Postby nutonas » Mon Dec 13, 2010 6:57 pm

sveiki, bendraminčiai žodžiu turiu kodą Java kalboje ir konfiguruodamas šį kodą pakibau.

Code: Select all

package UZD_5; import java.io.File; import java.io.IOException; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Scanner; import java.util.List; import java.util.Map; import java.util.TreeMap; @SuppressWarnings("unchecked") public class UZD_5 { static final DateFormat FRMT_DATE = new SimpleDateFormat("yyyy-MM-dd"); static Map<String, List<sarasas>> sarasasMap = new TreeMap(); static void printLine(int length) { for (int i = length; i > 0; i--) { System.out.print('-'); } System.out.println(); } static void printTableHeader(String title, String header) { System.out.println(title); printLine(header.length()); System.out.println(header); printLine(header.length()); } static void readIkainiai() throws IOException, ParseException { final String header = "| Detale | Pagaminimo data | Kiekis |"; printTableHeader("Sarasas:", header); Scanner scanner = new Scanner(new File("data/darbo-normatyvai.csv")); scanner.nextLine(); while (scanner.hasNext()) { String line = scanner.nextLine(); Scanner scann = new Scanner(line); scann.useDelimiter(";"); scann.useLocale(Locale.US); sarasas sarasas = new sarasas(); sarasas.detale = scann.next(); sarasas.dataNuo = FRMT_DATE.parse(scann.next()); sarasas.kiekis = scann.nextBigDecimal(); System.out.printf("| %-9s | %-15s | %6s |\n", sarasas.detale, FRMT_DATE.format(sarasas.dataNuo),sarasas.kiekis); List<sarasas> list = sarasasMap.get(sarasas.detale); if (list == null) { list = new ArrayList<sarasas>(); sarasasMap.put(sarasas.detale, list); } list.add(sarasas); } scanner.close(); printLine(header.length()); Comparator<sarasas> comparator = new Comparator<sarasas>() { @Override public int compare(sarasas o1, sarasas o2) { return o1.dataNuo.compareTo(o2.dataNuo); } }; for (List<sarasas> list : sarasasMap.values()) { Collections.sort(list, comparator); } } static void readDarboRezultatai() throws IOException, ParseException { final String header = "| Detale | Medziagu kaino verte | Darbo sanaudos vienetui |" + " Kitos papildamosislaidos vienos detales gamybai | Data nuo kada galioja nurodyti ikainiai| "; printTableHeader("Kainorastis:", header); Scanner scanner = new Scanner(new File("data/darbo-rezultatai.csv")); scanner.nextLine(); final String prnFormat = "| %-9s | %20s | %23s | %47s | %38s |\n"; Calendar calendar = Calendar.getInstance(); Map<ReportRecKey, ReportRec> reportMap = new HashMap(); while (scanner.hasNext()) { String line = scanner.nextLine(); Scanner scann = new Scanner(line); scann.useDelimiter(";"); scann.useLocale(Locale.US); // Duomenys yra US lokales tipo String detale = scann.next(); BigDecimal medziaguKaina = scann.nextBigDecimal(); BigDecimal darboSanaudos = scann.nextBigDecimal(); BigDecimal kitosIslaidos = scann.nextBigDecimal(); Date dataNuo = FRMT_DATE.parse(scann.next()); System.out.printf(prnFormat, detale, medziaguKaina, darboSanaudos, kitosIslaidos, FRMT_DATE.format(dataNuo)); sarasas ik = findPrise(detale, dataNuo); ReportRecKey repKey = new ReportRecKey(); repKey.detale = detale; calendar.setTime(dataNuo); repKey.menuo = (byte) (calendar.get(Calendar.MONTH) + 1); ReportRec repRec = reportMap.get(repKey); if (repRec == null) { repRec = new ReportRec(); repRec.detale = detale; repRec.menuo = repKey.menuo; //repRec.priskaiciuotsasAtlyginimas = kiekis.multiply(ik.uzmokestis //.divide(ik.kiekis)); reportMap.put(repKey, repRec); } else { //repRec.kiekis = repRec.kiekis.add(kiekis); //repRec.priskaiciuotsasAtlyginimas = repRec.priskaiciuotsasAtlyginimas //.add(kiekis.multiply(ik.uzmokestis.divide(ik.kiekis))); } } scanner.close(); printLine(header.length()); List<ReportRec> repRecList = new ArrayList<ReportRec>(reportMap .values()); Comparator<ReportRec> comparator = new Comparator<ReportRec>() { @Override public int compare(ReportRec o1, ReportRec o2) { int c; c = o1.kiekis.compareTo(o2.kiekis); if (c != 0) { return -c; } c = o1.priskaiciuotsasAtlyginimas.compareTo(o2.priskaiciuotsasAtlyginimas); if (c != 0) { return +c; } c = o1.menuo - o2.menuo; return +c; } }; Collections.sort(repRecList, comparator); final String raportHeader = "| Gaminio pavadinimas | Kiekis | " + "Išlaidos atlyg. | Mėnuo |"; printTableHeader("Mėnesinė ataskaita:", raportHeader); for (ReportRec o : repRecList) { System.out.printf("| %-19s | %6s | %15s | %5s |\n", o.detale, o.kiekis, o.priskaiciuotsasAtlyginimas, o.menuo); } printLine(raportHeader.length()); } private static sarasas findPrise(String gaminioKodas, Date dataLaikas) { List<sarasas> list = sarasasMap.get(gaminioKodas); for (int i = 1; i < list.size(); i++) { sarasas o = list.get(i); if (o.dataNuo.after(dataLaikas)) { sarasas ikainis = list.get(i - 1); return ikainis; } } return null; } private static class sarasas { String detale; BigDecimal kiekis; BigDecimal uzmokestis; Date dataNuo; String pastabos; } private static class ReportRec { String detale; BigDecimal kiekis; BigDecimal priskaiciuotsasAtlyginimas; byte menuo; } private static class ReportRecKey { String detale; byte menuo; @Override public int hashCode() { return detale.hashCode() + 31 * menuo; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj == null) { return false; } else { ReportRecKey o = (ReportRecKey) obj; if (menuo != o.menuo) { return false; } return detale.equals(o.detale); } } } public static void main(String[] args) throws Exception { readIkainiai(); readDarboRezultatai(); } }
Padarau duomenų išvedimą ir iš failų duomenų nuskaitymą bet nuo šios dalies...:

Code: Select all

ReportRecKey repKey = new ReportRecKey(); repKey.detale = detale; calendar.setTime(dataNuo); repKey.menuo = (byte) (calendar.get(Calendar.MONTH) + 1); ReportRec repRec = reportMap.get(repKey); if (repRec == null) { repRec = new ReportRec(); repRec.detale = detale; repRec.menuo = repKey.menuo; //repRec.priskaiciuotsasAtlyginimas = kiekis.multiply(ik.uzmokestis //.divide(ik.kiekis)); reportMap.put(repKey, repRec); } else { //repRec.kiekis = repRec.kiekis.add(kiekis); //repRec.priskaiciuotsasAtlyginimas = repRec.priskaiciuotsasAtlyginimas //.add(kiekis.multiply(ik.uzmokestis.divide(ik.kiekis))); } } scanner.close(); printLine(header.length()); List<ReportRec> repRecList = new ArrayList<ReportRec>(reportMap .values()); Comparator<ReportRec> comparator = new Comparator<ReportRec>() { @Override public int compare(ReportRec o1, ReportRec o2) { int c; c = o1.kiekis.compareTo(o2.kiekis); if (c != 0) { return -c; } c = o1.priskaiciuotsasAtlyginimas.compareTo(o2.priskaiciuotsasAtlyginimas); if (c != 0) { return +c; } c = o1.menuo - o2.menuo; return +c; } }; Collections.sort(repRecList, comparator); final String raportHeader = "| Gaminio pavadinimas | Kiekis | " + "Išlaidos atlyg. | Mėnuo |"; printTableHeader("Mėnesinė ataskaita:", raportHeader); for (ReportRec o : repRecList) { System.out.printf("| %-19s | %6s | %15s | %5s |\n", o.detale, o.kiekis, o.priskaiciuotsasAtlyginimas, o.menuo); } printLine(raportHeader.length()); } private static sarasas findPrise(String gaminioKodas, Date dataLaikas) { List<sarasas> list = sarasasMap.get(gaminioKodas); for (int i = 1; i < list.size(); i++) { sarasas o = list.get(i); if (o.dataNuo.after(dataLaikas)) { sarasas ikainis = list.get(i - 1); return ikainis; } } return null; } private static class sarasas { String detale; BigDecimal kiekis; BigDecimal uzmokestis; Date dataNuo; String pastabos; } private static class ReportRec { String detale; BigDecimal kiekis; BigDecimal priskaiciuotsasAtlyginimas; byte menuo; } private static class ReportRecKey { String detale; byte menuo; @Override public int hashCode() { return detale.hashCode() + 31 * menuo; } @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj == null) { return false; } else { ReportRecKey o = (ReportRecKey) obj; if (menuo != o.menuo) { return false; } return detale.equals(o.detale); } } } public static void main(String[] args) throws Exception { readIkainiai(); readDarboRezultatai(); }

nebepagaunu ka jis turetu išvesti. Gal kas turi kokiu minčių kaip užbaikti?

Return to “Programuotojų kampas”

Who is online

Users browsing this forum: No registered users and 20 guests

cron