Java: OOP-Třídy, práce se soubory – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Java: OOP-Třídy, práce se soubory – Java – Fórum – Programujte.comJava: OOP-Třídy, práce se soubory – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Neo
~ Anonymní uživatel
1 příspěvek
26. 8. 2009   #1
-
0
-

Dobry den,. chtel bych poprosit zde pritomne, kteri maji chut a cas mi poradit s mym problemem.
Snazil jsem se o vytvoreni kodu k tomuto zadani avsak skoncil jsem asi tak na +/-70% cesty a nevim jak dal ( mozna ze i jiz hotovy kod nepracuje spravne, ale to nejsem schopen posoudit z celkoveho vysledku, kdyz este neni program hotovy : o/ ).
Zadani je zde -> zobrazto.uk.funpic.org/obrazok.php?img=45881789592713.jpg
Me dosavadni kody tady ->

Trida Main:



/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package stipendium;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
*
* @author Neo
*/
public class Main {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws FileNotFoundException, IOException{
Scanner sc = new Scanner(System.in);
String jmenoVstupnihoSouboru, jmenoVystupnihoSouboru;
Student[] zak = new Student[1000];


String jmeno, prijmeni;
int cislo;
int[] znamky = new int[10];
double prumer;
int pocetStudentu = 0;

System.out.println("Zadejte nazev vstupniho souboru: ");
jmenoVstupnihoSouboru = sc.nextLine();
File zdroj = new File(jmenoVstupnihoSouboru);
System.out.println("Nazev vystupniho osuboru: ");
jmenoVystupnihoSouboru = sc.nextLine();
File cil = new File(jmenoVystupnihoSouboru);

Scanner in = null;
in = new Scanner(zdroj);

FileWriter fr = null;
fr = new FileWriter(cil);

try{
while(in.hasNext()){
cislo = in.nextInt();
// System.out.println(cislo);
jmeno = in.next();
// System.out.println(jmeno);
prijmeni = in.next();
// System.out.println(prijmeni);
for(int i = 0; i <=9; i++){
znamky[i] = in.nextInt();
}
// for(int i = 0; i <=9; i++){
// System.out.print(znamky[i] + " ");
// }
// System.out.println();
zak[pocetStudentu] = new Student(jmeno, prijmeni, cislo);
pocetStudentu++;
}


}finally{
if(in!=null){
in.close();
}
}

System.out.println(zak[0]);





}

}



Trida Student:


/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package stipendium;

/**
*
* @author Neo
*/
public class Student {
private String jmeno;
private String prijmeni;
private int cislo;
private int[] znamky;
private double prumer;

public Student(String jm, String pr, int id){
this.jmeno=jm;
this.prijmeni=pr;
this.cislo=id;
}

public String getJmeno(){
return this.jmeno;
}

public String getPrijmeni(){
return this.prijmeni;
}

public int getCislo(){
return this.cislo;
}

public int[] setZnamky(){
return znamky;
}

public double vypoctiPrumer(){
int znamka = 0;
double pom = 0;
for(int i = 0; i <= 9; i++){
znamka = znamka + this.znamky[i];
}
return this.prumer = (pom = znamka / 10);
}

public boolean kontrola(){
boolean stav = true;
for(int i = 0; i <= 9; i++){
if(znamky[i] <= 3){
}
else{
stav = false;
}
}
return stav;
}

public int vypoctiStipendium(){
int stipendium = 0;
if(prumer <= 1){ stipendium = 5000; }
else if((prumer >= 1.01 )&&(prumer <= 1.20)){ stipendium = 3000; }
else if((prumer >= 1.21)&&(prumer <= 1.50)){ stipendium = 2000; }
else if((prumer >= 1.51)&(prumer <= 1.80)){ stipendium = 1000; }
return stipendium;
}
}



Predem dekuji vsem za pomoc.

Nahlásit jako SPAM
IP: 89.24.6.–
Reklama
Reklama
robi90
Duch
30. 8. 2009   #2
-
0
-

Hele, tady ti posilam prepracovany a snad funkcni kod. Projdi si ho aby jsi se priste vyraroval chyb podobnych jako public int[] setZnamky() atd. Ale nerikam ze muj kod je dokonaly.

Skola.java



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

public class Skola {
private static String vstup, vystup;
private String jmeno, prijmeni;
private int ID;
private int[] znamky;
BufferedReader bfr = null;
BufferedWriter out;
String radek;
int polozka = 0;

public Skola() {
znamky = new int[10];
zpracujSoubor();
}

public void zpracujSoubor() {
try {
bfr = new BufferedReader(new FileReader(vstup));
out = new BufferedWriter(new FileWriter(vystup));
while((radek = bfr.readLine())!=null) {
if(polozka == 0) {
ID = Integer.parseInt(radek);
polozka = 1;
} else if(polozka == 1) {
prijmeni = radek;
polozka = 2;
} else if(polozka == 2) {
jmeno = radek;
polozka = 3;
} else {
String[] s = radek.trim().split(" ");
for(int i=0; i<s.length; i++) {
znamky[i] = Integer.parseInt(s[i]);
}
Student stud = new Student(jmeno, prijmeni, ID);
stud.setZnamky(znamky);
if(stud.kontrolaZnamek()&&(stud.vypoctiStipendium() != 0)) {
out.write(stud.toString());
System.out.println(stud.toString());
out.newLine();
}
polozka = 0;
}
}
bfr.close();
out.close();
}
catch (FileNotFoundException ex) {
System.out.println("Soubor nenalezen.");
}
catch (IOException ex) {
System.out.println("Problem pri cteni.");
}
}


public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("Zadejte vstupní soubor: ");
vstup = sc.nextLine();
System.out.print("Zadejte výstupní soubor: ");
vystup = sc.nextLine();
System.out.println("Operace se provadi...");

new Skola();

System.out.println("Hotovo!");
}
}


Student.java


public class Student {
private String jmeno, prijmeni;
private int ID;
private int[] znamky;

public Student(String jmeno, String prijmeni, int ID) {
this.jmeno = jmeno;
this.prijmeni = prijmeni;
this.ID = ID;
}

public void setZnamky(int[] znamky) {
this.znamky = znamky;
}

public String getJmeno() {
return jmeno;
}

public String getPrijmeni() {
return prijmeni;
}

public int getID() {
return ID;
}

@Override
public String toString() {
return (ID+" "+prijmeni+" "+jmeno+" prumer: "+vypoctiPrumer()+" => stipendium "+vypoctiStipendium()+" Kc.");
}

public double vypoctiPrumer() {
double suma=0;
for(int i=0; i<znamky.length; i++) {
suma += znamky[i];
}
return (suma/znamky.length);
}

public boolean kontrolaZnamek() {
for(int i=0;i<znamky.length;i++) {
if(znamky[i]<0 || znamky[i]>3) {
return false;
}
}
return true;
}

public int vypoctiStipendium() {
int stipendium = 0;
double prumer = vypoctiPrumer();
if(prumer == 1.0) {
stipendium = 5000;
} else if(prumer > 1 && prumer <=1.20) {
stipendium = 3000;
} else if(prumer>1.20 && prumer<=1.50) {
stipendium = 2000;
} else if(prumer>1.50 && prumer<=1.8) {
stipendium = 1000;
} else {
stipendium = 0;
}
return stipendium;
}
}


A muzu se zeptat, kam chodis na skolu?

Nahlásit jako SPAM
IP: 88.102.20.–
Morpheus :)
~ Anonymní uživatel
1 příspěvek
4. 10. 2009   #3
-
0
-

Skola.java:



package stipendium;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.LineNumberReader;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;


public class Skola
{


private static final int POCET_PREDMETU = 10;
private static final String ODDELOVAC_ZNAMEK_REGEXP = "[\\s]+"; // bile znaky, http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/Pattern.html


public static void main(String[] args)
{
zpracujSoubor();
}


public static int getPocetPredmetu()
{
return POCET_PREDMETU;
}


private static void zpracujSoubor()
{
System.out.println("\nZpracovani studijnich vysledku\n");
Scanner scanner = null;
LineNumberReader reader = null;
BufferedWriter writer = null;
try
{
scanner = new Scanner(System.in);

// vstupni soubor
String nazevVstupnihoSouboru = null;
boolean vstupnihoSouborNalezen = false;
while (!vstupnihoSouborNalezen)
{
System.out.print("Zadejte nazev vstupniho souboru: ");
nazevVstupnihoSouboru = scanner.nextLine();
try
{
reader = new LineNumberReader(new BufferedReader(new FileReader(nazevVstupnihoSouboru)));
vstupnihoSouborNalezen = true;
}
catch (FileNotFoundException e)
{
System.out.println("Nemohu najit vstupni soubor '" + nazevVstupnihoSouboru + "'\n");
}
}

// vytupni soubor
boolean vytupniSouborOveren = false;
while (!vytupniSouborOveren)
{
System.out.print("\nZadejte nazev vystupniho souboru: ");
String nazevVytupnihoSouboru = scanner.nextLine();
File vytupniSoubor = new File(nazevVytupnihoSouboru);
try
{
if (vytupniSoubor.exists())
{
String prepsat = null;
while (!("Y".equalsIgnoreCase(prepsat) || "N".equalsIgnoreCase(prepsat)))
{
System.out.print("\nSoubor '" + nazevVytupnihoSouboru + "' jiz existuje. Prepsat? (Y/N): ");
prepsat = scanner.nextLine();
}
if ("N".equalsIgnoreCase(prepsat))
{
continue;
}
}
else
{
vytupniSoubor.createNewFile();
}
writer = new BufferedWriter(new PrintWriter(vytupniSoubor));
vytupniSouborOveren = true;
}
catch (IOException e)
{
System.out.println("Nemohu vytvorit vystupni soubor '" + nazevVytupnihoSouboru + "'\n");
}
}

// vlastni zpracovani
String prvniRadek = null;
String[] radky = null;
try
{
while ((prvniRadek = reader.readLine()) != null)
{
radky = new String[] {prvniRadek, reader.readLine(), reader.readLine(), reader.readLine()};
Student student = nactiStudenta(radky);
if (student.getStipendium() > 0)
{
writer.write(asString(student));
writer.newLine();
}
}
}
catch (IllegalArgumentException e)
{
System.out.println("\nChyba pri zpracovani vstupniho souboru '" + nazevVstupnihoSouboru + "' (pocet zpracovanych radku je " + reader.getLineNumber() + "): " + e.getMessage());
int zbytek = reader.getLineNumber() % radky.length;
int pocetChybejicichRadku = (zbytek == 0) ? 0 : (radky.length - zbytek);
if (pocetChybejicichRadku != 0)
{
System.out.println("Soubor '" + nazevVstupnihoSouboru + "' nema odpovidajici pocet radku - chybi " + pocetChybejicichRadku + " radku u studenta cislo " + prvniRadek);
}
System.exit(-1);
}
catch (Exception e)
{
System.out.println("\nChyba pri zpracovani vstupniho souboru '" + nazevVstupnihoSouboru + "' na radku " + reader.getLineNumber() + ": " + e);
System.exit(-1);
}
}
finally
{
try
{
scanner.close();
}
catch (Exception e)
{}
try
{
reader.close();
}
catch (Exception e)
{}
try
{
writer.close();
}
catch (Exception e)
{}
}
System.out.println("\nZpracovani studijnich vysledku uspesne dokonceno");
}


private static Student nactiStudenta(String[] radky)
{
long studentskeCislo;
try
{
studentskeCislo = Long.parseLong(radky[0]);
}
catch (NumberFormatException e)
{
throw new IllegalArgumentException("Neplatne studentske cislo: '" + radky[0] + "'");
}
String jmeno = radky[1];
if ((jmeno == null) || (jmeno.trim().equals("")))
{
throw new IllegalArgumentException("Neplatne prazdne jmeno studenta: '" + jmeno + "'");
}
String prijmeni = radky[2];
if ((prijmeni == null) || (prijmeni.trim().equals("")))
{
throw new IllegalArgumentException("Neplatne prazdne prijmeni studenta: '" + prijmeni + "'");
}
String radekZnamek = radky[3];
if ((radekZnamek == null) || (radekZnamek.trim().equals("")))
{
throw new IllegalArgumentException("Neplatny prazdny radek se znamkami studenta: '" + radekZnamek + "'");
}
List<Hodnoceni> znamky = new ArrayList<Hodnoceni>(getPocetPredmetu());
for (String z : radekZnamek.trim().split(ODDELOVAC_ZNAMEK_REGEXP))
{
int znamka;
try
{
znamka = Integer.parseInt(z);
}
catch (NumberFormatException e)
{
throw new IllegalArgumentException("Neplatna znamka studenta: '" + z + "'");
}
Hodnoceni hodnoceni = Hodnoceni.forInt(znamka);
if (hodnoceni == null)
{
throw new IllegalArgumentException("Neplatna znamka studenta: '" + z + "'");
}
znamky.add(hodnoceni);
}
Student student = new Student(jmeno, prijmeni, studentskeCislo);
student.setZnamky(znamky);
return student;
}


private static String asString(Student student)
{
return student.getJmeno() + " " + student.getPrijmeni() + " " + student.getStudentskeCislo() + " " + student.getStipendium();
}


}


Student.java:


package stipendium;


import java.math.BigDecimal;
import java.util.List;


public class Student
{


private static final double PRUMER_NEURCEN = 0;
private static final int PRUMER__POCET_DESETINNYCH_MIST = 2;


private static int pocetPredmetu = Skola.getPocetPredmetu();


private String jmeno;
private String prijmeni;
private long studentskeCislo;
private List<Hodnoceni> znamky;
private double prumer;


public Student(String jmeno, String prijmeni, long studentskeCislo)
{
this.jmeno = jmeno;
this.prijmeni = prijmeni;
this.studentskeCislo = studentskeCislo;
prumer = PRUMER_NEURCEN;
}


public String getJmeno()
{
return jmeno;
}


public String getPrijmeni()
{
return prijmeni;
}


public long getStudentskeCislo()
{
return studentskeCislo;
}


public void setZnamky(List<Hodnoceni> znamky)
{
this.znamky = znamky;
prumer = spoctiPrumer();
}


public double getPrumer()
{
return prumer;
}


public boolean maVsechnyZkousky()
{
return ((znamky != null) && (znamky.size() >= pocetPredmetu) && !znamky.contains(null) && !znamky.contains(Hodnoceni.NEVYHOVEL));
}


public int getStipendium()
{
return ((prumer == PRUMER_NEURCEN) || !maVsechnyZkousky()) ? Stipendium.BEZ_STIPENDIA.mesicniVyseStipendia : Stipendium.getStipendium(prumer).mesicniVyseStipendia;
}


private double spoctiPrumer()
{
if ((znamky == null) || znamky.isEmpty())
{
return PRUMER_NEURCEN;
}
int soucet = 0;
for (Hodnoceni hodnoceni : znamky)
{
soucet += hodnoceni.znamka;
}
return zaokrouhleni(((double) soucet / znamky.size())); // pretypovani na je nutne!
}


private static double zaokrouhleni(double prumer)
{
return (new BigDecimal(prumer)).setScale(PRUMER__POCET_DESETINNYCH_MIST, BigDecimal.ROUND_HALF_UP).doubleValue();
}


}


Hodnoceni.java:


package stipendium;


public enum Hodnoceni
{


VYBORNE(1), VELMI_DOBRE(2), DOBRE(3), NEVYHOVEL(4);


public final int znamka;


Hodnoceni(int znamka)
{
this.znamka = znamka;
}


public static Hodnoceni forInt(int znamka)
{
for (Hodnoceni hodnoceni : Hodnoceni.values())
{
if (hodnoceni.znamka == znamka)
{
return hodnoceni;
}
}
return null;
}


}


Stipendium.java:


package stipendium;


public enum Stipendium
{


STIPENDIUM_5000(0, 1, 5000),
STIPENDIUM_3000(1, 1.2, 3000),
STIPENDIUM_2000(1.2, 1.5, 2000),
STIPENDIUM_1000(1.5, 1.8, 1000),
BEZ_STIPENDIA(1.8, Double.MAX_VALUE, 0);


public final double prumerOd;
public final double prumerDo;
public final int mesicniVyseStipendia;


private Stipendium(double prumerOd, double prumerDo, int mesicniVyseStipendia)
{
this.prumerOd = prumerOd;
this.prumerDo = prumerDo;
this.mesicniVyseStipendia = mesicniVyseStipendia;
}


public static Stipendium getStipendium(double prumer)
{
for (Stipendium stipendium : Stipendium.values())
{
if ((stipendium.prumerOd < prumer) && (prumer <= stipendium.prumerDo))
{
return stipendium;
}
}
return BEZ_STIPENDIA;
}


}

Nahlásit jako SPAM
IP: 83.208.238.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 21 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý