Forum » Programiranje » Java Objekti
Java Objekti
fingaz ::
Pozdravljeni
Imam problem pri 3 tocki dane naloge :
Imamo razred Tocka, ki predstavlja točko v ravnini. Imamo tudi razred Razdalje, ki iz datoteke prebere podatke o točkah in v izhodno datoteko zapiše podatke o razdaljah. Pri tem vhodno datoteko lahko preberemo le enkrat. Predpostavite lahko, da so vsi podatki v datoteki zapisani v pravilni obliki, kot je določeno v nalogi.
1. Napiši razred Tocka z ustreznimi atributi, konstruktorjem, metodo toString() ter metodo razdalja(). Metoda toString() vrne niz, ki predstavlja zapis točke v obliki (x,y), kjer sta x in y koordinati te točke. Metoda razdalja() pa vrne razdaljo med točko in podano referenčno točko; pri tem razdaljo med točkama izračuna kot kvadratni koren vsote razlik posameznih koordinat: razdalja med (x1,y1) in (x2,y2) je sqrt( (x2-x1)2 + (y2-y1)2 ).
2. Napiši razred Razdalje, ki prebere podatke o točkah iz datoteke, poišče sredinsko točko ter zapiše podatke o razdaljah med točkami v izhodno datoteko. Zbirka, v kateri hranimo prebrane podatke o točkah, naj bo deklarirana v metodi main tega razreda. Za branje datoteke, iskanje sredinske točke in za zapis datoteke uporabi ustrezne metode, ki so opisane v nadaljevanju.
3. Napiši metodo preberiTocke(), ki iz datoteke tocke.txt prebere koordinate točk na ravnini in jih shrani v pomnilniku (za to uporabi ustrezno zbirko). V datoteki so podatki o vsaki točki zapisani v svoji vrstici, sestavljata pa jih dve celi števili (ločeni s presledkom), ki pomenita koordinati točke. Primer datoteke je prikazan spodaj.
4. Napiši metodo poisciSredino(), ki izmed vseh točk na ravnini poišči skrajno levo, desno, zgornjo in spodnjo točko ter z njihovo pomočjo izračunaj sredinsko točko. Sredinska točka ima koordinato x na sredi med skrajno levo in skrajno desno točko, njena koordinata y pa je na sredi med najbolj zgornjo in najbolj spodnjo točko. Metoda naj to sredinsko točko najprej izpiše na standardi izhod, nato pa jo tudi vrne.
5. Napiši metodo zapisiRazdalje(), ki v izhodno datoteko zapiše podatke o razdaljah med posameznimi točkami in sredinsko točko. Ime izhodne datoteke podamo kot prvi argument ob klicu programa. Izhodna datoteka naj ima v prvi vrstici zapisane koordinate sredinske točke (xs,ys), v naslednjih vrsticah pa so zapisane posamezne točke in poleg njih njihova razdalja do sredinske točke, zaokrožena na dve decimalni mesti. Primer izhodne datoteke je prikazan spodaj.
Vem da je treba nekak poklicat metodo razdalja iz razreda Tocka samo mi nikakor ne gre v glavo kako bi to naredu. Prosim za pomoc .. Hvala !
Imam problem pri 3 tocki dane naloge :
Imamo razred Tocka, ki predstavlja točko v ravnini. Imamo tudi razred Razdalje, ki iz datoteke prebere podatke o točkah in v izhodno datoteko zapiše podatke o razdaljah. Pri tem vhodno datoteko lahko preberemo le enkrat. Predpostavite lahko, da so vsi podatki v datoteki zapisani v pravilni obliki, kot je določeno v nalogi.
1. Napiši razred Tocka z ustreznimi atributi, konstruktorjem, metodo toString() ter metodo razdalja(). Metoda toString() vrne niz, ki predstavlja zapis točke v obliki (x,y), kjer sta x in y koordinati te točke. Metoda razdalja() pa vrne razdaljo med točko in podano referenčno točko; pri tem razdaljo med točkama izračuna kot kvadratni koren vsote razlik posameznih koordinat: razdalja med (x1,y1) in (x2,y2) je sqrt( (x2-x1)2 + (y2-y1)2 ).
2. Napiši razred Razdalje, ki prebere podatke o točkah iz datoteke, poišče sredinsko točko ter zapiše podatke o razdaljah med točkami v izhodno datoteko. Zbirka, v kateri hranimo prebrane podatke o točkah, naj bo deklarirana v metodi main tega razreda. Za branje datoteke, iskanje sredinske točke in za zapis datoteke uporabi ustrezne metode, ki so opisane v nadaljevanju.
3. Napiši metodo preberiTocke(), ki iz datoteke tocke.txt prebere koordinate točk na ravnini in jih shrani v pomnilniku (za to uporabi ustrezno zbirko). V datoteki so podatki o vsaki točki zapisani v svoji vrstici, sestavljata pa jih dve celi števili (ločeni s presledkom), ki pomenita koordinati točke. Primer datoteke je prikazan spodaj.
4. Napiši metodo poisciSredino(), ki izmed vseh točk na ravnini poišči skrajno levo, desno, zgornjo in spodnjo točko ter z njihovo pomočjo izračunaj sredinsko točko. Sredinska točka ima koordinato x na sredi med skrajno levo in skrajno desno točko, njena koordinata y pa je na sredi med najbolj zgornjo in najbolj spodnjo točko. Metoda naj to sredinsko točko najprej izpiše na standardi izhod, nato pa jo tudi vrne.
5. Napiši metodo zapisiRazdalje(), ki v izhodno datoteko zapiše podatke o razdaljah med posameznimi točkami in sredinsko točko. Ime izhodne datoteke podamo kot prvi argument ob klicu programa. Izhodna datoteka naj ima v prvi vrstici zapisane koordinate sredinske točke (xs,ys), v naslednjih vrsticah pa so zapisane posamezne točke in poleg njih njihova razdalja do sredinske točke, zaokrožena na dve decimalni mesti. Primer izhodne datoteke je prikazan spodaj.
Vem da je treba nekak poklicat metodo razdalja iz razreda Tocka samo mi nikakor ne gre v glavo kako bi to naredu. Prosim za pomoc .. Hvala !
package Domace_NaLoge; public class Tocka { private double x; private double y; public Tocka() {} public Tocka(double x,double y) { this.x=x; this.y=y; } //set public void setx(double x) { this.x=x; } public void sety(double y) { this.y=y; } //get public double getx() { return x; } public double gety() { return y; } public String toString() { return "("+x+" , "+y+")"; } double razdalja(Tocka toc) { return Math.sqrt( Math.pow( (toc.x-x) , 2) + Math.pow( (y-toc.y), 2)); } }
package Domace_NaLoge; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Razdalja { static Tocka tocka[] = new Tocka[4]; static int i=0; public static void main(String[] args) { preberiTocke(); poisciSredino(); } public static void preberiTocke() { try { Scanner sc=new Scanner(new File("tocke.txt")); while(sc.hasNext()) { String vrstica=sc.nextLine(); String tab[]=vrstica.split(" "); int x=Integer.parseInt(tab[0]); int y=Integer.parseInt(tab[1]); tocka[i]=new Tocka(x, y); i++; } }catch(FileNotFoundException e) { System.err.println("FILE NOT FOUND"); e.printStackTrace(); } } public static Tocka poisciSredino() { for(int j=0;j<tocka.length;j++) { if(tocka[j].getx() < 0 && tocka[j].gety() > 0) { double xlevaZg=tocka[j].getx(); double ylevaZg=tocka[j].gety(); } if(tocka[j].getx() < 0 && tocka[j].gety() < 0) { double xlevaSp=tocka[j].getx(); double ylevaSp=tocka[j].gety(); } if(tocka[j].getx() > 0 && tocka[j].gety() > 0) { double xdesnaZg=tocka[j].getx(); double ydesnaZg=tocka[j].gety(); } if(tocka[j].getx() > 0 && tocka[j].gety() < 0) { double xdesnaSp=tocka[j].getx(); double ydesnaSp=tocka[j].gety(); } //tuki bi pol mogl dobit sredinsko tocko x in y pa ne stekam } } }
phyro ::
ne razumem točno kaj sprašuješ... poklical bi rad neko metodo (v tvojem primeru double razdalja(Tocka toc)) ?
se pravi ce prav stekam mas ti neke tocke v tabeli, ce hoces recimo tocko na indeksu 0 primerjat s tocko na indeksu 4, to nardiš takole:
double razdalja04 = tocka[0].razdalja(tocka[4]);
pozabil sem kako je z dostopom do metode če ne napišeš nič ali je private ali public ^^
se pravi ce prav stekam mas ti neke tocke v tabeli, ce hoces recimo tocko na indeksu 0 primerjat s tocko na indeksu 4, to nardiš takole:
double razdalja04 = tocka[0].razdalja(tocka[4]);
pozabil sem kako je z dostopom do metode če ne napišeš nič ali je private ali public ^^
alexa-lol ::
nisem pogledal ampak... si ziher, da si pravilni inicializiru array s String tab[] . Kaj ni String[] tab ...
alexa-lol ::
evo sem ti malo predelal kodo...pri iskanju sredine si sploh kompliciral... zdaj dela kot mora
+ naucil sem se novega nacina inicializacije polj
package sloTechDomacaNaloga; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Razdalja { static Tocka tocka[] = new Tocka[6]; public static void main(String[] args) { preberiTocke(); //poisciSredino(); //printPoints(); poisciSredino(); } public static void printPoints(){ for(int i = 0; i < tocka.length; i++){ System.out.println(tocka[i].toString()); } } public static void preberiTocke() { try { Scanner sc=new Scanner(new File("C:\\Input\\tocke.txt")); int i = 0; while(sc.hasNext()) { String vrstica=sc.nextLine(); String tab[]=vrstica.split(" "); int x=Integer.parseInt(tab[0]); int y=Integer.parseInt(tab[1]); tocka[i]=new Tocka(x, y); i++; } } catch(FileNotFoundException e) { System.err.println("FILE NOT FOUND"); e.printStackTrace(); } } public static void poisciSredino() { for(int j=0;j<tocka.length-1;j++) { double midX = (tocka[j].getx()+tocka[j+1].getx()) / 2; double midY = (tocka[j].gety()+tocka[j+1].gety()) / 2; System.out.printf("Sredina tock %s in %s je (%.1f , %.1f)\n", tocka[j].toString(), tocka[j+1].toString(), midX, midY); } } }
+ naucil sem se novega nacina inicializacije polj
Spura ::
alexa-lol ::
jap sem se zmotil...deklaracija je...
bom jaz zaradi same preglednosti ostal na T[]...[] blabla
bom jaz zaradi same preglednosti ostal na T[]...[] blabla
frutabela ::
Pozdravljeni!
upam da je še kdo na tem forumu. Ker se moje vprašanje nanaša na to temo, ne bom odpirala posebej teme. Zanima me namreč, če tile getterji in setterji spadajo pod metodo to string ali pod katero drugo metodo? vem da se moje vprašanje marsikomu zdi butasto, ampak sem bol med novimi programerji v javi in mi kar dosti stvari ni povsem jasno!
Že vnaprej hvala za odgovore!
Lp
upam da je še kdo na tem forumu. Ker se moje vprašanje nanaša na to temo, ne bom odpirala posebej teme. Zanima me namreč, če tile getterji in setterji spadajo pod metodo to string ali pod katero drugo metodo? vem da se moje vprašanje marsikomu zdi butasto, ampak sem bol med novimi programerji v javi in mi kar dosti stvari ni povsem jasno!
Že vnaprej hvala za odgovore!
Lp
Mavrik ::
Katere getterje in setterje misliš točno (lahko prilepiš kako kodo da bo bolj razumljivo)?
Namreč v zgornjem primeru sta getx() in gety() metodi in seveda nista del toString(), ki je tudi metoda. Metode ne moreš dati znotraj druge metode. So pa vsi del razreda Tocka.
Namreč v zgornjem primeru sta getx() in gety() metodi in seveda nista del toString(), ki je tudi metoda. Metode ne moreš dati znotraj druge metode. So pa vsi del razreda Tocka.
The truth is rarely pure and never simple.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [Java] Podatkovni tipOddelek: Programiranje | 3707 (3359) | piki12 |
» | [Java] Zasnova shoot em up igreOddelek: Programiranje | 1168 (847) | PecenkA |
» | [C++] MetodeOddelek: Programiranje | 1488 (1320) | Klobasa |
» | [JAVA] branje iz datotekeOddelek: Programiranje | 2377 (2012) | Bela01 |
» | [Java][Naloga] SkladiOddelek: Programiranje | 1651 (1450) | bijonda |