1 program ve 2 souborech – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

1 program ve 2 souborech – Java – Fórum – Programujte.com1 program ve 2 souborech – Java – Fórum – Programujte.com

 

K4BlOs
~ Anonymní uživatel
56 příspěvků
15. 11. 2012   #1
-
0
-

tak tu mám další problém. Mám vytvořit třídu Student (soubor Student.java), která bude mít privátní atributy osobniCislo a prumerZnamek. Musím napsat konstruktor, potřebné getry, setry a metodu toString(). Potom musim napsat metodu String vratLepsiPrumer(Student s), která ze dvou studentů vybere studenta s lepším průměrem známek a prostřednictvím metody toString() zajistí výpis jeho osobního čísla a průměru známek. Funkčnost třídy mám ověřit v aplikační třídě, ve které nejprve načtu pomocí statické metody Student nactiStudenta(Scanner sc) informace o dvou studentech, v pořadí osobní číslo a průměr známek, které budou pro každého studenta zadány na jednom řádku a navzájem odděleny mezerou. Tyto informace o obou studentech musím vypsat (metodou toString()) v pořadí, ve kterém byli studenti zadáni a informaci o studentu s lepším průměrem známek využitím již vytvořené metody datové třídy.

v souboru Student.java mám

public class Student {
	//atributy
	private String osobniCislo;
	private double prumerZnamek;
	
	//konstruktor
	public Student(String osobniCislo, double prumerZnamek) {
		this.osobniCislo = osobniCislo;
		this.prumerZnamek = prumerZnamek;
	}
	
	//getry a setry
	public String getOsobniCislo() {
		return osobniCislo;
	}
	
	public double getPrumerZnamek() {
		return prumerZnamek;
	}
	
	//metoda toString
	public String toString() {
		return "\n<Osobni cislo: " + osobniCislo + ", prumer = " + prumerZnamek + ">"; 
	}
	
	//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
	public String vratLepsiPrumer(Student s) {
	}
}

a v hlavní třídě mám toto

import java.util.*;

public class XXX {
	static Scanner sc = new Scanner(System.in);
	
	public static Student nactiStudenta(Scanner sc) {
		System.out.print("Zadejte osobni cislo a prumer: ");
    	String osobniCislo = sc.next();
    	double prumerZnamek = sc.nextDouble();
    	sc.nextLine();
    	Student s = new Student(osobniCislo, prumerZnamek);
    	return s;
	}
	
	public static void main(String[] args) {
		sc = new Scanner(System.in);
		sc.useLocale(Locale.US);
		Student[] studenti = new Student[2];
		for (int i = 0; i < studenti.length; i++) {
			studenti[i] = nactiStudenta(sc);
		}
		System.out.println(Arrays.toString(studenti));
	}
}

výstup má vypadat asi takto:

Zadejte osobni cislo a prumer: A09B0999P 3.1
Zadejte osobni cislo a prumer: A08B0999K 2.34
---Vysledky---
<Osobni cislo: A09B0999P, prumer = 3.1>
<Osobni cislo: A08B0999K, prumer = 2.34>
Lepsi prumer ma: <Osobni cislo: A08B0999K, prumer = 2.34>

Navíc mám v tom mojem výpisu navíc ještě před a za polem "[" "]".

Nahlásit jako SPAM
IP: 176.12.115.–
sakal910
Stálý člen
15. 11. 2012   #2
-
0
-

#1 K4BlOs
A otázka zní? S čím chceš pomoct, nebo s čím si nevíš rady? :D Si zapomněl nějak položit otázku :D

Nahlásit jako SPAM
IP: 31.222.8.–
reciproke0
Návštěvník
15. 11. 2012   #3
-
0
-

#1 K4BlOs
Nevypisuj celé pole přes Arrays.toString(studenti), ale projdi ho cyklem a vypisuj studenti[index].

Nahlásit jako SPAM
IP: 82.208.4.–
K4BlOs
~ Anonymní uživatel
56 příspěvků
16. 11. 2012   #4
-
0
-

:D otázka měla směřovat k metodě  

public String vratLepsiPrumer(Student s) {

nevim jak ji přesně napsat, protože do toho pole "studenti" se mi pod index "0" ulozi i to osobniCislo a i ten prumerZnamek a to podobne i u indexu "1" tak nevim jak mam vytvorit podminku pro vypsani studenta s lepsim prumerem. A druhá otázka je k těm hranatým "[ ]" zavorkam co mam u mojeho vystupu a ty by tam byt nemely.

#3 reciproke
Když to projedu tím cyklem, tak mám mít ten vypis studenti[index] ještě v tom cyklu nebo až za konečnou závorkou "}" toho cyklu?

Nahlásit jako SPAM
IP: 176.12.115.–
reciproke0
Návštěvník
16. 11. 2012   #5
-
0
-

#4 K4BlOs
Odledně lepšího průměru, přepiš si tu metodu aby přijímala pole studentů, které v cyklu projdeš. V něm budeš hledat nelepší průměr a když na něj narazíš tak si někam uložíš index. Následně si pomocí indexu z pole vybereš studenta a vrátíš co potřebuješ. btw princip jsi už používat u maximálního výkytu...

Kam s tím.... zkusil bych to logicky, když ti cyklus umožní zaindexovat do pole postupně všechny prvky, tak kam by jsi to dal? Mimo to prázdný cyklus toho asi moc neudělá.

Nahlásit jako SPAM
IP: 82.208.4.–
Dano
~ Anonymní uživatel
101 příspěvků
16. 11. 2012   #6
-
0
-

 Ked som spravne pochopil zadanie, tak budes mat vzdy zadanych iba 2 studentov, takze Tvoja metodka String vratLepsiPrumer(Student s); je iba obycajne porovnanie.

//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
public String vratLepsiPrumer(Student s) {
	return (this.prumerZnamek < s.getPrumerZnamek()) 
		? this.toString()
		: s.toString();
}
Nahlásit jako SPAM
IP: 195.28.127.–
reciproke0
Návštěvník
16. 11. 2012   #7
-
0
-

aha těch 2 dvou jsem si nevšimnul ani mě to netrklo podle té metody. Jsem myslel že pole pro 2 tam má deklarované prozatím...

V tom případě tu metodu podle toho co píše Dano a volat ji budeš tedy takhle

studenti[0].vratLepsiPrumer(studenti[1]);

K vypsání studentů, kvůli rozšiřitelnosti bych udělal ten cyklus, nebo pro teď můžeš tak 

System.out.print(studenti[0]);
System.out.print(studenti[1]);
Nahlásit jako SPAM
IP: 82.208.4.–
K4BlOs
~ Anonymní uživatel
56 příspěvků
16. 11. 2012   #8
-
0
-

tak jsem to nakonec udělal bez toho pole. Tu  metodu "vratLepsiPrumer" jsem napsal takto

//metoda ktera ze dvou studentu vybere studenta s lepsim prumerem znamek
	public String vratLepsiPrumer(Student s) {
		if (this.prumerZnamek > s.prumerZnamek) {
			return s.toString();
		}
		else {
			return this.toString();
		}
	}

a v mainu takto

public static void main(String[] args) {
		sc = new Scanner(System.in);
		sc.useLocale(Locale.US);
		Student student1 = nactiStudenta(sc);
		Student student2 = nactiStudenta(sc);
		System.out.println("---Vysledky---");
		System.out.println(student1.toString());
		System.out.println(student2.toString());
		String s;
		s = student1.vratLepsiPrumer(student2);
		System.out.println("Lepsi prumer ma: " + s.toString());
	}
Nahlásit jako SPAM
IP: 176.12.115.–
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, 5 hostů

Moderátoři diskuze

 

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